zoukankan      html  css  js  c++  java
  • No4.传统线程同步通信技术

    1.面试题

       子线程循环10次,接着住线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环50次。

     
    public class ThreadTest {
    
        public static void main(String[] args) {
            new ThreadTest().init();
    
        }
    
        public void init() {
            final Business business = new Business();
            new Thread(new Runnable() {
    
                public void run() {
                    for (int i = 0; i < 50; i++) {
                        business.SubThread(i);
                    }
                }
    
            }
    
            ).start();
    
            for (int i = 0; i < 50; i++) {
                business.MainThread(i);
            }
        }
    
        private class Business {
            boolean bShouldSub = true;// 这里相当于定义了控制该谁执行的一个信号灯
    
            public synchronized void MainThread(int i) {
                if (bShouldSub)
                    try {
                        this.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                for (int j = 0; j < 100; j++) {
                    System.out.println(Thread.currentThread().getName() + ":i=" + i
                            + ",j=" + j);
                }
                bShouldSub = true;
                this.notify();
    
            }
    
            public synchronized void SubThread(int i) {
                if (!bShouldSub)
                    try {
                        this.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                for (int j = 0; j < 10; j++) {
                    System.out.println(Thread.currentThread().getName() + ":i=" + i
                            + ",j=" + j);
                }
                bShouldSub = false;
                this.notify();
            }
    
        }
    
    }
  • 相关阅读:
    MySQL事物原理及事务隔离级别
    sql中in和exists的原理及使用场景。
    PHP实现多继承
    磁盘inode节点被占满的解决方法
    使用uwsgi和gunicorn部署Django项目
    python自学经验,每天进步一点点
    msyql 5.7安装遇到的坑
    shell 三剑客
    nginx 配置
    websphere 新建profile
  • 原文地址:https://www.cnblogs.com/royi123/p/3082925.html
Copyright © 2011-2022 走看看