三线程连续打印ABC
package test5; import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock; class PrintThread implements Runnable{ private ReentrantLock lock=new ReentrantLock();
Condition condition = lock.newCondition();
private int state=0; @Override
public void run() {
String threadName=Thread.currentThread().getName();
lock.lock();
try {
for(int i=0;i<9;i++){
if(threadName.equals("A")){
while(state%3!=0){
condition.await();
}
}else if(threadName.equals("B")){
while(state%3!=1){
condition.await();
}
}else if(threadName.equals("C")){
while(state%3!=2){
condition.await();
}
}
state++;
System.out.println(threadName);
condition.signalAll();
}
} catch (Exception e) {
// TODO: handle exception
}finally{
lock.unlock();
} } } public class PrintABC{
public static void main(String[] args) {
PrintThread pt=new PrintThread();
Thread t1=new Thread(pt,"A");
Thread t2=new Thread(pt,"B");
Thread t3=new Thread(pt,"C");
t1.start();
t2.start();
t3.start();
}
}
一条线程连续打印ABC:
class PrintABC implements Runnable{ private Lock lock = new ReentrantLock();
private Condition condition = lock.newCondition(); @Override
public void run() {
String threadName = Thread.currentThread().getName();
lock.lock();
int state = 0;
try{
while(state < 10){
if(state % 3 == 0){
System.out.print("A ");
}else if(state % 3 == 1){
System.out.print("B ");
}else if(state % 3 == 2){
System.out.print("C ");
}
state++;
} }finally {
lock.unlock();
}
} }
public class ThreadDemo { public static void main(String[] args) {
PrintABC p = new PrintABC();
Thread t = new Thread(p);
t.start();
}
}
三线程连续打印ABC的更多相关文章
- 斐讯面试记录—三线程交替打印ABC
package cn.shenzhen.feixun; public class PrintABC extends Thread{ private String name; private Objec ...
- java多线程编程题之连续打印abc的几种解法
一道编程题如下: 实例化三个线程,一个线程打印a,一个打印b,一个打印c,三个线程同时执行,要求打印出6个连着的abc 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程分别会打印6 ...
- java多线程编程之连续打印abc的几种解法
一道编程题如下: 实例化三个线程,一个线程打印a,一个线程打印b,一个线程打印c,三个线程同时执行,要求打印出10个连着的abc. 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程 ...
- {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器
Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...
- java三线程循环有序打印ABC
迅雷笔试题: 编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. 解决思路:每个线 ...
- 多线程面试题之【三线程按顺序交替打印ABC的方法】
建立三个线程,线程名字分别为:A.B.C,要求三个线程分别打印自己的线程名字,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印.打印10轮,打印完毕控制台输出字符串:&q ...
- 三个线程,ABC 10次(volatile+synchronized(2 synchronized可以保证内存可见性,所以去掉status 的volatile修饰符)
package ThreadABC; public class MyThread extends Thread { public static int status = 0; @Override pu ...
- 三个线程,ABC 10次(volatile+synchronized)
package ThreadABC; public class Share { private volatile int status; public int getStatus() { return ...
- [******] java多线程连续打印abc
题目描述 建立三个线程A.B.C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印. 5种方法 使 ...
随机推荐
- C#导出csv文件 支持中文的解决方案
#region 导出CSV下载 string exportFileName = "Export" + DateTime.Now.ToString("yyyyMMddHHm ...
- 张艾迪(创始人):创始人故事无限N个
世界第一女孩+世界第一互联网女孩 创始人故事无限N个 全球第一互联网女孩EidyZhang艾迪.张 The World No.1 Girl :Eidyzhang The World No.1 Inte ...
- SAP物料批次管理配置及操作手册(轉載)
这个有待学习 业务说明需要先熟悉基本的物料管理(MM).生产计划管理(PP).销售与分销管理(SD)的相关知识.在化工.制药.快消.汽车零部件等行业,为了进行质量的跟踪,往往需要使用批次管理来监控质量 ...
- 关于makefile
0 Makefile概述 -------------------------------------------------------------------------------- 什么是mak ...
- Oracle 客户端连接服务器[转]
很多朋友在开发项目中并不是每个人用一个数据库,而是有单独的一台主机作为开发的数据库服务器,这样,就需要我们的开发人员去连接它. 首先是进入oracle的 Net Mananger:
- 运放——压摆率SR的意义和如何选取
http://blog.csdn.net/dxshappy/article/details/8065798
- ionic 安装遇到的问题以及解决方案
公司里要用到 Ionic 做移动App 混合开发 一个环境搭建折腾了好几天.一是公司权限问题,二是网络问题,你懂得. Ionic 环境搭建官网有教程.本来几行命令就能搞定的事,一旦遇到网络问题,就蛋疼 ...
- DAO JDBC 学生成绩管理系统
1:student.course类 package JDBCU; public class Student { private String no; private String name; publ ...
- debug实战:COM组件GetToSTA导致高内存+GC被阻塞
最近花了好几周解决一个WPF高内存的问题,问题的表象是内存不断增加.未被回收,根源是GC的FinalizeThread被阻塞,导致整个GC挂掉.从以下几步来分析这个问题: 1.用ANTS Memory ...
- 第1章 Express MongoDB 搭建多人博客
学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...