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();
}
posted @ 2021-04-23 17:25  Hy·  阅读(54)  评论(0)    收藏  举报