直接上代码,后面我也有一个问题,关于对象的notifyAll或者notify或者single或者singleAll,唤醒线程是顺序唤醒吗,我这里都是顺序输出了

关于公平与非公平锁的问题?唤醒是公平的???又没有大佬帮助解答!

 1 import java.util.concurrent.LinkedBlockingQueue;2 import java.util.concurrent.ThreadPoolExecutor;3 import java.util.concurrent.TimeUnit;4 import java.util.concurrent.locks.Condition;5 import java.util.concurrent.locks.Lock;6 import java.util.concurrent.locks.ReentrantLock;7 8 /**9  * 使用lock对象,使多个线程循环输出0-99-0-99
10  */
11 public class AandBforTOthreadLock {
12     private static Lock lock=new ReentrantLock();
13     private static Condition single=lock.newCondition();
14     static class A implements Runnable{
15         private int i=0;
16         public A(int i){
17             this.i=i;
18         }
19         @Override
20         public void run() {
21             try {
22                 lock.lock();
23                 while (true){
24                     System.out.println(i);
25                     single.await();
26                     single.signal();
27                 }
28             }catch (Exception e){
29                 e.printStackTrace();
30             }finally {
31                 lock.unlock();
32             }
33         }
34     }
35     static class B implements Runnable{
36         @Override
37         public void run() {
38             try {
39                 lock.lock();
40                 while (true){
41                     System.out.println("99");
42                     single.signalAll();
43                     single.await();
44                 }
45             }catch (Exception e){
46                 e.printStackTrace();
47             }finally {
48                 lock.unlock();
49             }
50         }
51     }
52
53     public static void main(String[] args) throws InterruptedException {
54         ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(100,100,0L, TimeUnit.MILLISECONDS,
55                 new LinkedBlockingQueue<Runnable>());
56         for (int i=0;i<99;i++){
57             threadPoolExecutor.execute(new A(i));
58             Thread.sleep(3l);
59         }
60         Thread.sleep(10000l);
61         threadPoolExecutor.execute(new B());
62     }
63
64 }输出:

……

转载于:https://www.cnblogs.com/qfxydtk/p/8728840.html

使多个线程循环输出0-99-0-99相关推荐

  1. 【算法java版04】:顺时针方向循环输出矩阵

    顺时针方向循环输出矩阵 一.题目描述 二.实现思路 三.代码示例 四.测评结果 (1)4 x 4 矩阵: (2)3 x 3 矩阵: 一.题目描述 使用二维数组构建一个矩阵,按照顺时针方向循环输出矩阵内 ...

  2. 一道面试题:三个线程循环有序输出10次ABCABC...

    面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...

  3. Java多线程:用三个线程控制循环输出10次ABC

    题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同 ...

  4. 有3个线程ABC。按照ABC来运行(A线程输出A,B线程输出B,C线程输出C,以此类推,循环输出)。

    个人记录:2018年,工作的第6到7个年头. 重点研究自己不太擅长的技术:分布式.高并发.大数据量.数据库优化.高性能.负载均衡等. 刷题是一种态度,是一种好习惯. 有3个线程ABC.按照ABC来运行 ...

  5. java用输出v形,Java之循环输出等腰三角形

    public class aaa{ public static void main(String[] args) { int max=5; for(int i=1;i<=5;i++){//控制行 ...

  6. 如何使cmd的输入和输出重定向到管道中(用这种方法可以将指令写入cmd并抓取输出)

    / //                                                                                      // //      ...

  7. java 多线程输出_[Java多线程]ABC三个线程顺序输出的问题

    大概的问题是这样的: 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C 要求, 同时启动三个线程, 按顺序输出ABC, 循环10次 这是一个多线程协同的问题, 本身多线程是没有执行 ...

  8. java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...

    有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...

  9. ThreadLocal使用时因线程复用导致数据混乱分析

    ThreadLocal使用时因线程复用导致数据混乱分析 本文主要阐述使用ThreadLocal遇到数据混乱情况下的具体分析和解决过程 ThreadLocal原理 网上有很多介绍,不做详细介绍主要有四个 ...

最新文章

  1. 记一次网站部署遇到的问题
  2. SQLSERVER2014中的新功能
  3. SQLServer之分离数据库
  4. TOMCAT虚拟路径配置
  5. 免otp动态密码登录堡垒机
  6. Linux系统编程——I/O多路复用select、poll、epoll
  7. 登录服务器用户账户限制,当用户有登录到的限制时,远程桌面登录报错的解决...
  8. 几篇关于 Redis集群方面的知识学习
  9. python 归纳 (十八)_队列Queue在多线程中使用(二)
  10. 自动适配autolayout
  11. arraylist线程安全吗_面试官:用过ThreadLocal吗?它保证线程安全的原理是啥?
  12. 微型计算机原理与接口技术(慕课版),微机原理与接口技术
  13. Android dex修复工具,Android的dex热修复的实现基本原理
  14. 官宣:两校合并,落户省会!
  15. 【Task02】Pandas之基础
  16. python爬虫爬取深交所数据
  17. 初见Laravel框架
  18. Spark中RDD的sortBy排序的5种实现方法
  19. 熬夜整理,五万字长文总结 C/C++ 知识点
  20. 【Unity3d日常开发】Unity3D中实现热力图、风向图、温度图效果

热门文章

  1. FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法
  2. 系统中已安装了vmware,请先卸载干净并重启电脑
  3. i标签content属性输入空白
  4. [react] 说说你对reader的context的理解
  5. React开发(100):3.0没有image
  6. react学习(4)----两个全选中就是key值一样了
  7. 前端学习(3124):react-hello-react之props的简写
  8. 前端学习(3087):vue+element今日头条管理-关于接口的使用
  9. [css] style标签写在body前和body后的区别是什么?
  10. 工作329:uni-数据为空不显示