package itat;
public class Example9_16 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread thread1=new MyThread();
thread1.setName("张三");
thread1.start();
YourThread thread2=new YourThread(thread1);
thread2.setName("李四");
thread2.start();
}
}
class MyThread extends Thread{
int i=0;
public void run(){
while(true){
i++;
System.out.println("我的名字是"+getName()+"i="+i);
if(i==10){
guaqi();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public synchronized void guaqi() {
// TODO Auto-generated method stub
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public synchronized void huifu(){
notifyAll();
}
}
class YourThread extends Thread{
int m=0;
MyThread otherThread;
YourThread(MyThread a){
otherThread=a;
}
public void run(){
while(true){
m++;
System.out.println("我的名字是"+getName()+"m="+m);
if(m==20){
System.out.println("恢复线程:"+otherThread.getName());
System.out.println(getName()+"停止工作");
otherThread.huifu();
return;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}