线程状态
基本划分 | Thread.State | 结合 | 描述 |
---|---|---|---|
New | NEW | 新建 | 描述 |
Runnable | RUNNABLE | 就绪 | 描述 |
Running | 运行中 | 描述 | |
Blocked | BLOCKED | 阻塞 | 等待临界区的锁synchronize而阻塞 |
WAITING | 等待 | 进入了锁,需要等待其他线程执行一些操作,时间不确定 | |
TIMED_WAITING | 超时等待 | 进入了锁,需要等待其他线程执行一些操作,时间确定 | |
Dead | TERMINATED | 终止 | 描述 |
线程状态转化
线程有关API
Tread类
- 静态方法
- Thread currentThread() :获得当前线程的引用。获得当前线程后对其进行操作。
- boolean interrupted() :测试当前线程是否已经中断(将中断状态标记为false)。
- 实例方法
- Thread.State getState() :返回该线程的状态。
- boolean isAlive() :测试线程是否处于活动状态。
- void run() :线程启动后执行的方法。
- void start():使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
- void sleep(long millis) :休眠指定时间
- void yield() :暂停当前正在执行的线程对象,并执行其他线程。意义不太大
- void join() :等待该线程终止。
- void join(long millis) :等待该线程终止的时间最长为 millis 毫秒。
- void interrupt() :中断线程(将中断状态标记为true)。
- boolean isInterrupted():测试线程是否已经中断(不改中断标记)。
- interrupt和InterruptedException,中断机制详细内容见:https://editor.csdn.net/md/?articleId=115570415
- 方法中有声明InterruptedException异常时,使用interrupt方法会导致InterruptedException异常
- 例如:sleep,join,wait
- 方法中有声明InterruptedException异常时,使用interrupt方法会导致InterruptedException异常
Object类
- 实例方法
- notify()
- notifyAll()
- wait()
- wait(long millis)
创建线程的方式
- 继承Thread类,单继承
- 实现Runnable接口,克服单继承的缺点
- 使用Callable和Future创建线程,可以获取返回值和异常
- 使用线程池例如用Executor框架