线程的学习(一)
一、线程,进程,多线程。
1、线程:线程指进程中的一个执行场景,也就是执行流程。
2、进程:进程指的是一个内存中运行的应用程序,如.exe,一个进程对应一个应用程序,一个进程可以对应多个线程。
3、多线程:指的是这个程序(一个进程)运行时产生了不止一个线程。
二、线程的状态
1.新建状态(New): 即创建一个线程对象:Thread t = new MyThread();
2.就绪状态(Runnable): 执行了t.start( ) 表示当前线程已经做好准备,等待CPU调度,并不是直接执行;
3.运行状态(Running): CPU调度该线程;
4.阻塞状态(Block):
a.等待阻塞:调用wait(),使该线程处于等待池(wait blocked pool),直到notify()/notifyAll(),
线程被唤醒被放到锁定池(lock blocked pool ),释放同步锁使线程回到可运行状态(Runnable);
b.同步阻塞:对Running状态的线程加同步锁(Synchronized)使其进入(lock blocked pool ), 锁被其他线程占用,
同步锁被释放进入可运行状态(Runnable);
c.其他阻塞:调用join()和sleep()方法或发出IO请求,sleep()时间结束或被打断,join()中断,IO完成都会回到Runnable状态,等待JVM的调度;
5.死亡状态(Dead):线程执行完了或者在执行中因异常退出了run()方法,该线程就结束了。
三、创建线程(三种方法)
1.继承Thread类,重写run( )
2.实现Runnable接口,重写run( )
3.用Callable 和 Future接口创建线程