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的更多相关文章

  1. 斐讯面试记录—三线程交替打印ABC

    package cn.shenzhen.feixun; public class PrintABC extends Thread{ private String name; private Objec ...

  2. java多线程编程题之连续打印abc的几种解法

    一道编程题如下: 实例化三个线程,一个线程打印a,一个打印b,一个打印c,三个线程同时执行,要求打印出6个连着的abc 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程分别会打印6 ...

  3. java多线程编程之连续打印abc的几种解法

    一道编程题如下: 实例化三个线程,一个线程打印a,一个线程打印b,一个线程打印c,三个线程同时执行,要求打印出10个连着的abc. 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程 ...

  4. {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器

    Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...

  5. java三线程循环有序打印ABC

    迅雷笔试题: 编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. 解决思路:每个线 ...

  6. 多线程面试题之【三线程按顺序交替打印ABC的方法】

    建立三个线程,线程名字分别为:A.B.C,要求三个线程分别打印自己的线程名字,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印.打印10轮,打印完毕控制台输出字符串:&q ...

  7. 三个线程,ABC 10次(volatile+synchronized(2 synchronized可以保证内存可见性,所以去掉status 的volatile修饰符)

    package ThreadABC; public class MyThread extends Thread { public static int status = 0; @Override pu ...

  8. 三个线程,ABC 10次(volatile+synchronized)

    package ThreadABC; public class Share { private volatile int status; public int getStatus() { return ...

  9. [******] java多线程连续打印abc

    题目描述 建立三个线程A.B.C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印. 5种方法 使 ...

随机推荐

  1. Port Hacking

    Port information21 ftp 主要看是否支持匿名,也可以跑弱口令22 ssh23 telnet79 Finger80 web 常见web漏洞以及是否为一些管理后台111 rpcinfo ...

  2. redhat网络基础配置

    添加浮动IP: ifconfig eth0:1 192.168.1.106 IP配置文件: BOOTPROTO: 采用的启动协议,有三种选择: (1) none:不使用启动协议 (2) static: ...

  3. VS2012添加PlaySound引用

    <windows程序设计>中给出的demo代码中有PlaySound的使用,但是因为这个是代码是针对VC6.0,其中说明的引用的添加和VS2012中有些许不同. 在VC6.0中projec ...

  4. 远程实时调试手机上的Web页面

    1. 安装    需要Node.js平台, 先安装好后, 打开Node.js command prompt, 通过NPM来安装 weinre npm -g install weinre 2. 启动   ...

  5. python 学习笔记-----编码问题

    1.python 最早支持的是ASCII编码. 所以对于普通的字符串"ABC"为ASCII编码的形式.字母和数字之间的转换函数为ord('字母')和chr(‘数字’)函数. ord ...

  6. git删除远程仓库的某次错误提交

    改日写git的各种本地恢复 今天不小心把一个分支合并到master上了,上网查了一下回复的方法,简单来说就是: 在本地 把远程的master分支删除再把reset后的分支内容给push上去 新建old ...

  7. jpype调用jar

    import easyguiimport osfrom jpype import * jarpath = "d:\jar"print "jarPath: %s" ...

  8. investopedia level 2

    Mispricing can be explained by the sum of the two components: true mispricing and estimation errorVe ...

  9. APIO2015 酱油记

    Day 0 昨天CTSC才比完,当然是要浪啦! 于是浪了一天...午饭都没吃... 晚饭...貌似也没吃... 晚上的时候觉得这样子浪不太好,还是要认真一下,打开bzoj,弃疗了...还是浪吧... ...

  10. PHP的三种输出方式

    (1)echo 是PHP语句,没有返回值,用于输出一个或多个字符串 (2)print() 是函数,可以有返回值,只能打印出简单类型变量的值,例如int.string (3)print_r() 是函数, ...