java多线程学习-同步之线程通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程学习-同步之线程通信相关的知识,希望对你有一定的参考价值。
这个示例是网上烂大街的,子线程循环100次,主线程循环50次,但是我试了很多次,而且从网上找了很多示例,其实多运行几次,看输出结果并不正确。不知道是我转牛角尖了,还是怎么了。也没有大神问,好痛苦。现在记录在这里,等以后有时间看。
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class ThreadCommunication { public static void main(String[] args) { final Test2 t = new Test2(); new Thread(new Runnable() { public void run() { for(int i=0;i<10;i++){ t.sub(i); } } }).start(); for(int i=0;i<10;i++){ t.main(i); } } } class Test{ boolean isSub = false; public synchronized void sub(int l){ System.out.println("-----sub"); while(!isSub){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for(int i=0;i<10;i++){ System.out.println(l+" sub "+i); } isSub = false; this.notify(); } public synchronized void main(int l){ System.out.println("-----main"); while(isSub){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for(int i=0;i<10;i++){ System.err.println(l+" main "+i); } isSub = true; this.notify(); } }
以上是关于java多线程学习-同步之线程通信的主要内容,如果未能解决你的问题,请参考以下文章