final Lock lc = new ReentrantLock();
.. run() {
lc.lock();
...
lc.unlock();
}
可能打开方式不对吧,没实现!
改用join() 可以实现(BC与A以单线程模式执行),代码如下:
package com.w.thread;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Thread3 implements Runnable {
final Lock lock = new ReentrantLock();
private String name;
public Thread3(String name) {
super();
this.name = name;
}
@Override
public void run() {
for (int i = 1; i < 10001; i++) {
System.out.println("线程" + name + ":" + i);
}
}
public static void main(String[] args) {
Thread3 t1 = new Thread3("A");
Thread3 t2 = new Thread3("B");
Thread3 t3 = new Thread3("C");
Thread A = new Thread(t1);
Thread B = new Thread(t2);
Thread C = new Thread(t3);
try {
B.start();
B.join();
C.start();
C.join();
A.start();
A.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
不要在生产环境中使用Thread.join(),和没用单线程差不多。