首页 > 代码库 > java多线程学习-同步之线程通信
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多线程学习-同步之线程通信
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。