使多个线程循环输出0-99-0-99
直接上代码,后面我也有一个问题,关于对象的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相关推荐
- 【算法java版04】:顺时针方向循环输出矩阵
顺时针方向循环输出矩阵 一.题目描述 二.实现思路 三.代码示例 四.测评结果 (1)4 x 4 矩阵: (2)3 x 3 矩阵: 一.题目描述 使用二维数组构建一个矩阵,按照顺时针方向循环输出矩阵内 ...
- 一道面试题:三个线程循环有序输出10次ABCABC...
面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...
- Java多线程:用三个线程控制循环输出10次ABC
题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同 ...
- 有3个线程ABC。按照ABC来运行(A线程输出A,B线程输出B,C线程输出C,以此类推,循环输出)。
个人记录:2018年,工作的第6到7个年头. 重点研究自己不太擅长的技术:分布式.高并发.大数据量.数据库优化.高性能.负载均衡等. 刷题是一种态度,是一种好习惯. 有3个线程ABC.按照ABC来运行 ...
- java用输出v形,Java之循环输出等腰三角形
public class aaa{ public static void main(String[] args) { int max=5; for(int i=1;i<=5;i++){//控制行 ...
- 如何使cmd的输入和输出重定向到管道中(用这种方法可以将指令写入cmd并抓取输出)
/ // // // ...
- java 多线程输出_[Java多线程]ABC三个线程顺序输出的问题
大概的问题是这样的: 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C 要求, 同时启动三个线程, 按顺序输出ABC, 循环10次 这是一个多线程协同的问题, 本身多线程是没有执行 ...
- java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...
有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...
- ThreadLocal使用时因线程复用导致数据混乱分析
ThreadLocal使用时因线程复用导致数据混乱分析 本文主要阐述使用ThreadLocal遇到数据混乱情况下的具体分析和解决过程 ThreadLocal原理 网上有很多介绍,不做详细介绍主要有四个 ...
最新文章
- 记一次网站部署遇到的问题
- SQLSERVER2014中的新功能
- SQLServer之分离数据库
- TOMCAT虚拟路径配置
- 免otp动态密码登录堡垒机
- Linux系统编程——I/O多路复用select、poll、epoll
- 登录服务器用户账户限制,当用户有登录到的限制时,远程桌面登录报错的解决...
- 几篇关于 Redis集群方面的知识学习
- python 归纳 (十八)_队列Queue在多线程中使用(二)
- 自动适配autolayout
- arraylist线程安全吗_面试官:用过ThreadLocal吗?它保证线程安全的原理是啥?
- 微型计算机原理与接口技术(慕课版),微机原理与接口技术
- Android dex修复工具,Android的dex热修复的实现基本原理
- 官宣:两校合并,落户省会!
- 【Task02】Pandas之基础
- python爬虫爬取深交所数据
- 初见Laravel框架
- Spark中RDD的sortBy排序的5种实现方法
- 熬夜整理,五万字长文总结 C/C++ 知识点
- 【Unity3d日常开发】Unity3D中实现热力图、风向图、温度图效果
热门文章
- FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法
- 系统中已安装了vmware,请先卸载干净并重启电脑
- i标签content属性输入空白
- [react] 说说你对reader的context的理解
- React开发(100):3.0没有image
- react学习(4)----两个全选中就是key值一样了
- 前端学习(3124):react-hello-react之props的简写
- 前端学习(3087):vue+element今日头条管理-关于接口的使用
- [css] style标签写在body前和body后的区别是什么?
- 工作329:uni-数据为空不显示