使用Lock锁顺序执行线程(lock锁实现)
要求:A线程打印一个1,B线程打印两个2,C线程打印三个3。顺序执行,并且循环打印10次。我们直接看代码:
我们理解下上面的代码:
1、标识位number:它的值代表着哪个线程可以运行。
2、Condition:可以理解为是钥匙的作用,一把锁lock可以有多把钥匙,当钥匙处于失效状态(condition1.await()阻塞),那么当前线程就处于阻塞状态,需要等待唤醒。通过钥匙来控制线程的执行状态。
3、唤醒signal:当Condition对象调用signal的时候,表示当前钥匙唤醒,拥有当前这把钥匙的线程开始执行下面的代码。
4、unlock:释放锁,锁用完必须要释放,不然会造成死锁的现象。一般配合try{}finally{lock.unlock();};这样使用。