JUC并发编程
线程
通常通过实现runnable接口创建
new Thread(
new Runnable(){
@Override
public void run() {
}
}
);
可以用lambda
Lambda表达式
lambda表示式可以简写单方法接口
//括号内写参数,代码在同一行时{}也可以省略
new Thread(()->{});
进程
程序的一次执行,可拥有多个线程,java启动时必然包含main线程和GC线程(守护线程)
synchronized
一个关键字,可重入锁,自动释放,非公平
Lock
一个类,在java.util.concurrent.locks 下,可重入锁,手动释放,非公平
有三个实现方式、最常用的是Reetrantlock
条件判断用while,用if可能会导致虚假唤醒
unlock和signal要写在finally里
Lock lock=new ReentrantLock();
Condition condition = lock.newCondition();
try {
while()
lock.lock();
condition.await();
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
lock.unlock();
condition.signalAll();
}

浙公网安备 33010602011771号