线程可以合理的利用多核心CPU资源,提高成勋的吞吐量。
一、Java中如何使用线程
1、实现Runnable接口
2、继承Thread(本质是对Runnable接口的实现)
3、实现Callable(带返回值的线程)
4、实现Future(带返回值的线程)
5、线程池
二、线程的生命周期
NEW
在new Thread();阶段
RUNNABLE
调用start();方法
BLOCKED
当线程监测到对象的锁已经占有。例如,t1 和 t2两个线程都要占用对象加锁的方法。 当前t1正在执行。 如果t2在调用 此方法,则t2的状态为bolcked
WAITING
在java层面。当调用wait join yield方法的时候。
TIMED_WAITING
带有时间的waiting状态
TERMINATED
终止状态,由jvm自动销毁
问题:
1、线程的启动为什么是start?
因为调用run方法就是相当于普通的new对象调用方法。 在start方法中,调用了start0(),方法。这个方法在底层帮我们实现了让操作系统创建线程。并且还设置线程状态为Runnable
2、怎么使线程终止?
a.Tread.interrupt();
b.InterruptedException