JAVA多线程编程
一、java多线程编程概念
1、进程:同一个操作系统中执行的一个子程序,包含了三部分虚拟CPU、代码、数据
2、多线程:同一个操作系统中执行的多个并行的子程序。可以提高cpu的使用率。
3、线程:在同一个进程当中执行的子程序流。
4、多线程:同一个进程当中并发执行的多个子程序流。可以提高cpu的使用率。
5、并发:进程是并发运行的,OS将时间划分为很多时间片段(时间片),尽可能均匀分配给正在运行程序,微观上进程走走停停,宏观上都在运行,这种运行的现象叫并发,但不是绝对意义上的“同时发生”。
6、进程和线程的区别:
进程有独立的进程空间,进程中的数据存放空间(堆空间和栈空间)是独立的。
线程的堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的。
二、线程编程的两种方法
1、继承Thread类,重写run()方法
2、实现Runnable接口,实现run()方法
三、线程的状态
1、NEW 新建状态:当程序用new关键字创建线程之后,该线程就处于新建状态,此时线程还未启动,当线程对象调用start()方法时,线程启动,进入Runnable状态
2、Runnable 可运行(就绪)状态:当线程处于Runnable状态时,表示线程准备就绪,等待获取CPU
3、Running运行(正在运行)状态:假如线程获取了CPU,则进入Running状态,开始执行线程体,即run()方法中的内容。调用yield()状态,可以是线程由Running状态进入Runnable状态
4、Block阻塞(挂起)状态:当如下情况下,线程会进入阻塞状态:
①线程调用了sleep()方法主动放弃所占CPU资源
②线程调用了一个阻塞式IO方法(比如控制台输入方法),在该方法返回前,该线程被阻塞
当阻塞结束时,该线程将进入Runnable状态,而非直接进入Running状态。
5、Dead 死亡状态:
①当线程的run()方法执行结束,线程进入Dead状态
②不能对一个已经死亡的线程调用start()方法,线程死亡后将不能再次作为线程启动,系统会抛出异常
四、注意
1、new
http://home.feifeishijie.com/thread-430816-1-1.html