zoukankan      html  css  js  c++  java
  • 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次(亲测可用)

    package duoxiancheng;
    
    public class MyThreadTest2 {
    
        public static void main(String[] args) throws InterruptedException{
            final MyService ms = new MyService();
            new Thread(new Runnable() {
                
                @Override
                public void run() {
                    for(int i = 1; i <=50;i++){
                        ms.sub(i);
                    }
                    
                }
            }).start();
            
            //让子线程先跑
            Thread.sleep(1000);
            
            //main方法本身即为主线程
            for(int i = 1;i <= 50;i++){
                ms.main(i);
            }
    
        }
        
        static class MyService{
            
            boolean beShouldSub = true;//是否执行子线程标志位
            //子线程循环10次
            public synchronized void sub(int i) {
                if(!beShouldSub){
                    try {
                        this.wait();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                for(int j =1;j<=10;j++){
                    System.out.println("sub thread sequeue of " + j + "loop of " + i);
                }
                beShouldSub = false;//子线程执行完毕,子线程标志位设为false
                this.notify();//唤醒主线程
                
            }
            
            //主线程循环100次
            public synchronized void main(int i) {
                if(beShouldSub){
                    try {
                        this.wait();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                for(int j = 1; j <= 100; j++){
                    System.out.println("Main thread sequeue of " + j + "loop of " + i);
                }
                
                beShouldSub = true;//主线程执行完毕,子线程标志位设为true
                this.notify();//唤醒子线程
            }
            
        }
    
    }
  • 相关阅读:
    javascript执行上下文
    javascript深浅拷贝
    javascript模块化
    javascript类型转换
    闭包
    通过插槽分发内容
    组件上使用v-model
    Vue $emit $event 传值(子to父)
    Vue Prop属性(父to子)
    Vue组件全局/局部注册
  • 原文地址:https://www.cnblogs.com/lingluo2017/p/7286189.html
Copyright © 2011-2022 走看看