Java线程
1. 线程创建方式
a) 继承Thread
b) 实现Runnable接口重写run方法
c) 使用Callable和Future创建线程
i. Callable接口的call方法作为线程执行体
ii. call方法有返回值
iii. call方法可以声明抛出异常
2. 线程的状态
a) 新建、就绪、阻塞、运行、死亡
3. 控制线程
a) join线程
b) 线程睡眠sleep
c) 线程让步yield
sleep和yield的区别:
1 sleep方法暂停当前线程后,会给其它线程执行机会,不会理会其它线程的优先级;但yield只会给优先级相同,或优先级更高的线程执行机会
2 sleep方法会将线程转入阻塞状态,直到经过阻塞时间才会转入就绪状态;而yield强制当前线程进入就绪状态。
3 sleep方法抛出异常,所以调用sleep方法要么捕捉异常,要么显式声明抛出异常;而yield没有声明抛出任何异常
4 sleep方法比yield方法有更好的移植性
4. 线程同步
a) synchronized
i. 同步代码块
ii. 同步方法
b) 同步锁Lock
5. 线程通信
a) wait、notify、notifyAll与synchronized
b) condition(Lock)
i. await
ii. signal
iii. signalAll
c) 阻塞队列BlockingQueue
6. 线程池
7. ForkJoinPool