package test;
public class ThreadTest2 extends Thread {
private int threadNo;
private String lock;
public ThreadTest2(int threadNo, String lock) {
this.threadNo = threadNo;
this.lock = lock;
}
public void run() {
synchronized (lock) {//线程同步 同步锁是lock 如果不同步 将synchronized 去掉
for (int i = 0; i < 5; i++) {
if(i==2){
try {
lock.wait();//当循环i=2时 将线程暂停并放入线程池
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
System.out.println("No." + threadNo + ":" + i);
}
}
}
public static void main(String[] args) throws Exception {
String lock = new String("lock");new ThreadTest2(1, lock).start();
new ThreadTest2(2, lock).start();
new ThreadTest2(3, lock).start();
new ThreadTest2(4, lock).start();
new ThreadTest2(5, lock).start();
new ThreadTest2(6, lock).start();
new ThreadTest2(7, lock).start();
new ThreadTest2(8, lock).start();
new ThreadTest2(9, lock).start();
new ThreadTest2(10, lock).start();
Thread t2 = new Thread() {
public void run()
{
synchronized (lock) {
System.out.println("T2 start!");
lock.notify();//唤醒lock锁被放入线程池的随机一个线程
System.out.println("T2 end!");
}
}
};
t2.start();
}
}