博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发包实现:机试题-〉子线程循环10次,接着回到主线程循环100次,又接着回到子线程循环10次,再接着回到主线程又循环100次,如次循环50次,请写出程序...
阅读量:6492 次
发布时间:2019-06-24

本文共 2231 字,大约阅读时间需要 7 分钟。

public class ConditionCommunication {    /**     * @param args     */    public static void main(String[] args) {                final Business business = new Business();        new Thread(                new Runnable() {                                        @Override                    public void run() {                                            for(int i=1;i<=50;i++){                            business.sub(i);                        }                                            }                }        ).start();                for(int i=1;i<=50;i++){            business.main(i);        }            }    static class Business {            Lock lock = new ReentrantLock();            Condition condition = lock.newCondition();          private boolean bShouldSub = true;          public  void sub(int i){              lock.lock();              try{                  while(!bShouldSub){                      try {                        condition.await();                    } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                  }                    for(int j=1;j<=10;j++){                        System.out.println("sub thread sequence of " + j + ",loop of " + i);                    }                  bShouldSub = false;                  condition.signal();              }finally{                  lock.unlock();              }          }                    public  void main(int i){              lock.lock();              try{                 while(bShouldSub){                          try {                            condition.await();                        } catch (Exception e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                      }                    for(int j=1;j<=100;j++){                        System.out.println("main thread sequence of " + j + ",loop of " + i);                    }                    bShouldSub = true;                    condition.signal();          }finally{              lock.unlock();          }      }        }}

 

转载于:https://www.cnblogs.com/superGG/p/6902448.html

你可能感兴趣的文章
Windows中挂载安装ISO文件
查看>>
Wayland 1.0发布
查看>>
golang的goroutine是如何实现的?
查看>>
乐视云基于Kubernetes的PaaS平台建设
查看>>
R 学习笔记《十》 R语言初学者指南--图形工具
查看>>
PHP通过读取DOM抓取信息
查看>>
DICOM医学图像处理:DICOM网络传输
查看>>
nio和传统Io的区别
查看>>
移动端网页布局中需要注意事项以及解决方法总结
查看>>
(原创)Linux下查看系统版本号信息的方法
查看>>
oracle
查看>>
基于C的文件操作(转)
查看>>
redis使用过程中主机内核层面的一些优化
查看>>
我也要谈谈大型网站架构之系列(2)——纵观历史演变(下)
查看>>
OctoberCMS目录结构-基于Laravel
查看>>
大话设计模式(Golang) 二、策略模式
查看>>
JQuery页面随滚动条动态加载效果实现
查看>>
Jackson 处理is开头的字段
查看>>
使用PostgreSQL 9.6 架设mediawiki服务器
查看>>
数据库服务器硬件对性能的影响
查看>>