需求: 创建3个线程, 让着三个线程按顺序执行(比如: 线程一, 线程二, 线程三…)
先执行线程一
线程本身是随机的,不知道先执行哪一个,题目要求先执行线程一,以下提供两种方法,本质上差不多
可以注释掉while循环,检测第一次执行的结果
//方法一:
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
public class Test01 {
//需求: 创建3个线程, 让着三个线程按顺序执行
//(比如: 线程一, 线程二, 线程三.......)
static int preThread = 1;//标记要运行的项目
public static void main(String[] args) {
//创建可以锁定代码的对象
ReentrantLock lock = new ReentrantLock();
//获取可以操作线程等待唤醒的Condition对象
Condition cn1 = lock.newCondition();
Condition cn2 = lock.newCondition();
Condition cn3 = lock.newCondition();
Thread t1 = new Thread("线程一") {
public void run() {
while(true) {
lock.lock();
if(preThread != 1){
//如果要运行的线程是1,线程1不用等待,不等于1,才需要等待
try {
//让当前线程等待
cn1.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
cn2.signal()