您的位置:首页 > 编程语言 > Java开发

Java多线程进阶一(基础入门)

2017-07-07 09:17 302 查看


一、多线程概念

线程概念

线程就是程序中单独顺序的流控制。

线程本身不能运行,它只能用于程序中。

说明:线程是程序内的顺序流,只能使用分配给程序的资源和环境。

进程:操作系统中执行的程序

程序是静态的概念,进程是动态的概念。

一个进程可以包含一个或多个线程。

一个进程至少要包含一个线程。

多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 

•线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。

多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。

单线程

单个程序中只有一个执行路径就是单线程。
当程序启动运行时,就自动产生一个线程,主方法main就在这个主线程上运行。我们的程序就是由线程运行的。


多线程

多线程指在单个程序中可以同时运行多个不同的线程执行不同的任务。

多线程编程的目的,就是“最大限度地利用CPU资源”,当某一线程的处理不需要占用CPU而只和IO等资源打交道时,让需要占用CPU的其他线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。

一个程序实现多个代码同时交替运行就需要产生多个线程。

CPU随机地抽出时间,让我们的程序一会做这件事情,一会做另外的事情。

从宏观角度来看,多个线程在同时执行(宏观并行),但是微观上来看,处理器的个数决定了某一个时刻可以同时运行的最大线程数,

如单核CPU某一时刻只能有一个线程在执行(微观串行),双核的CPU在某一个时刻,最多可以运行两个线程,可以做到微观并行。


二.java中实现多线程的方式

1.继承Thread类并重写它的run方法。之后创建这个子类的对象并调用start()方法。

2.通过定义实现Runnable接口的类进而实现run方法。这个类的对象在创建Thread的时候作为参数被传入,然后调用start()方法。

Thread类是专门用来创建线程和对线程进行操作的类。当某个类继承了Thread类之后,该类就叫做一个线程类

两种方法均需执行线程的start()方法为线程分配必须的系统资源、调度线程运行并执行线程的run()方法。

注意:start()方法是启动线程的唯一的方法。start()方法首先为线程的执行准备好系统资源,然后再去调用run()方法。

run()方法中放入了线程的工作,即我们要这个线程去做的所有事情。缺省状况下run()方法什么也不做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: