应用场景:应用程序需要新建若干线程进行事务处理,这些线程处理完毕后,应用程序会进行一些后续的操作。
解决办法:使用Object.wait(),Object.notify()方法。Object.wait()方法会阻断当前线程的执行,直到其他线程调用Object.notify()。
于是可以很快的写出一个示例程序:
public static void main(String[] args) {
final Object syncObj = new Object();
Thread thread = new Thread() {
public void run() {
try {
Thread.sleep(3000);
synchronized(syncObj) {
syncObj.notify();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
synchronized(syncObj) {
try {
syncObj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Exit");
}
调用wait和notify方法前,一定要用synchronized(syncObj),否则会抛出IllegalMonitorStateException。
有空再写写Concurrence Util里的工具类,简化上面的操作。