Java中线程同步的简单用法
应用场景:应用程序需要新建若干线程进行事务处理,这些线程处理完毕后,应用程序会进行一些后续的操作。
解决办法:使用Object.wait(),Object.notify()方法。Object.wait()方法会阻断当前线程的执行,直到其他线程调用Object.notify()。
于是可以很快的写出一个示例程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> main(String[] args) { final Object syncObj = <span class="kwrd">new</span> Object(); Thread thread = <span class="kwrd">new</span> Thread() { <span class="kwrd">public</span> <span class="kwrd">void</span> run() { <span class="kwrd">try</span> { Thread.sleep(3000); synchronized(syncObj) { syncObj.notify(); } } <span class="kwrd">catch</span> (InterruptedException e) { e.printStackTrace(); } } }; thread.start(); synchronized(syncObj) { <span class="kwrd">try</span> { syncObj.wait(); } <span class="kwrd">catch</span> (InterruptedException e) { e.printStackTrace(); } } System.<span class="kwrd">out</span>.println(<span class="str">"Exit"</span>); } |
调用wait和notify方法前,一定要用synchronized(syncObj),否则会抛出IllegalMonitorStateException。
有空再写写Concurrence Util里的工具类,简化上面的操作。
近期评论