一.等待唤醒
wait():线程等待,等待的过程中,释放锁,需要其他线程用notify去唤醒
notify():唤醒一个等待的线程,如果有多个线程等待,随机一条唤醒
notifyAll():唤醒所有等待的线程
二.Lock锁
1.概述
接口
2.使用
a.获取:ReentrantLock
b.方法
lock():获取锁
unlock():释放锁
三.Callable
1.概述
接口,类似于Runnable,是实现多线程的第三种方法
2.方法:call()
设置线程任务,类似于run方法
可以throw异常,还有返回值
四.线程池
1.概述
容器中有多条线程对象,来了线程任务,直接从线程池中获取线程对象,用完还回去
2.获取
static ExecutorService
newFixedThreadPool(int nThreads)
3.执行
Future<?> submit(Runnable task):提交一个Runnable任务用于执行
Future<T> submit(Callable<T> task):提交一个Callable任务用于执行
4.返回值:Future接口
V get() 用于获取call方法返回值
5.关闭线程池
void shutdown():启动有序关闭,其中先前提交的任务将被执行,但不会接受任何新任务