import java.io.*;
public class MethodTest {
static PrintWriter out = new PrintWriter(System.out, true);//创建一个打印流
public static void main(String[] args) {
FirstThread first = new FirstThread();//创建一个线程first
SecondThread second = new SecondThread();//创建一个线程second
first.start();//启动线程first,进入了可运行态
second.start();//启动线程second,进入了可运行态
try {
out.println("Waigting for first thread to finish....");//主线程先执行
first.join();//注意join()方法:等待本线程完成为止
out.println("It's a long wait!");
out.println("Waking up second Thread....");
synchronized (second) {//同步块的概念
second.notify();
}
out.println("Waiting for second thread to finish...");
second.join();//join()方法表示一直等待本线程结束为止
}catch(InterruptedException e) {}
}
}
class FirstThread extends Thread {
public void run() {
try {
MethodTest.out.println("First thread starts running.");
sleep(10000);//睡眠10秒
MethodTest.out.println("First thread finishes running.");
}catch(InterruptedException e) {}
}
}
class SecondThread extends Thread {
public synchronized void run() {
try {
MethodTest.out.println(" second thread suspends itself.");
wait();
MethodTest.out.println(" second thread runs again and finishes.");
}catch (InterruptedException e) {}
}
}