子线程和 主线程 互换
Posted K____K
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子线程和 主线程 互换相关的知识,希望对你有一定的参考价值。
package demo; /** * 子线程循环5次,主线程循环10次。依次交替。整个交替循环3次 * */ public class ThreadTest { public static void main(String[] args) { init(); } static void init(){ final Print p = new Print();//封装了 循环的动作 new Thread(new Runnable(){ @Override public void run() { for(int i=0;i<3;i++){ p.subPrint(5);//循环5次 } } }).start(); new Thread(new Runnable(){ @Override public void run() { for(int i=0;i<3;i++){ p.mainPrint(10);//循环10次 } } }).start(); } }
Print:
package demo; /** * 两个方法之间互斥 (方法里面完整执行完),用 Sflag实现 开关控制 两个方法的切换 * */ public class Print { boolean Sflag = true; public synchronized void subPrint(int num){ while(!Sflag){//避免 伪唤醒 try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for(int i=1;i<=num;i++){ System.out.println(Thread.currentThread().getName()+":"+i); } Sflag = false; this.notifyAll(); } public synchronized void mainPrint(int num){ while(Sflag){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for(int i=1;i<=num;i++){ System.out.println(Thread.currentThread().getName()+":"+i); } Sflag = true; this.notifyAll(); } }
以上是关于子线程和 主线程 互换的主要内容,如果未能解决你的问题,请参考以下文章
EventBus事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )