介绍
最近看看多线程练习题,练习下多线程,这道题:ABC三个线程如何保证顺序执行。三个线程同时启动,然后按照顺序执行,每个线程执行10次。
思路
首先想到了等待队列Condition唤醒部分线程,使用ReentrantLock进行加锁。
初始版实现
/**
* @description A\B\C三个线程顺序执行10次
*
* @author sunpy
* @date 2018年11月28日 下午2:23:45
*/
public class MyTest {
static class MyTask {
private static ReentrantLock rl = new ReentrantLock();
private static Condition conditionA = rl.newCondition();
private static Condition conditionB = rl.newCondition();
private static Condition conditionC = rl.newCondition();
private static int number = 0;
public void execute() {
rl.lock();
try {
while (number < 30) {
if (number % 3 == 0) {
System.out.println(Thread.