学过操作系统的人都知道前驱图是一个很好用来描述多个进程或线程间的同步执行的过程
科普一下同步的概念:同步是用来描述多个并发线程或进程按某种规则共享系統资源,并能很好的相互协作,使程序执行具有可再现性。
首先我们来看一下最简单的前趋图
java如何实现了
有俩种方式
第一种基于Lock+Condition方式
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Test {
public static void main(String[] args) {
//创建一个固定的线程池
ExecutorService es=Executors.newFixedThreadPool(4);
//创建一个锁
final Lock lock=new ReentrantLock();
//创建一个条件S
final Condition s=lock.newCondition();
//我们调一下主线程的执行顺序 p2->p1
//理想输出结果为 p1->p2
es.execute(new Runnable(){
@Override
public void run() {
lock.lock();
try{
try {
//阻塞等待信号量的通知
s.await();
//当前线程要处理的功能代码,在这里我只简单输出一句话
System.out.println("我是p2线程 ");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}finally{
lock.unlock();
}
}
});
es.execute(new Runnable(){
@Override
public