博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程:用三个线程控制循环输出10次ABC
阅读量:7225 次
发布时间:2019-06-29

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

题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次。

解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同步工作,也就是说要让三个线程轮流输出,直到10个ABC全部输出则结束线程。这里用一个Lock对象来控制三个线程的同步。用一个int型变量state标识由那个线程输出。

 

1 package com.thread; 2 3 import java.util.concurrent.locks.Lock; 4 import java.util.concurrent.locks.ReentrantLock; 5 6 public class ABC { 7     private static int state = 0; 8 9     public static void main(String[] args) {10         final Lock l = new ReentrantLock();1112         Thread A = new Thread(new Runnable(){13             @Override14             public void run() {15                 while (state<=30) {16                     l.lock();17                     if(state%3==0){18                         System.out.println(“A”);19                         state ++;20                     }21                     l.unlock();22                 }23             }24         });25         Thread B = new Thread(new Runnable(){26             @Override27             public void run() {28                 while (state<=30) {29                     l.lock();30                     if(state%3==1){31                         System.out.println(“B”);32                         state ++;33                     }34                     l.unlock();35                 }36             }37         });38         Thread C = new Thread(new Runnable(){39             @Override40             public void run() {41                 while (state<=30) {42                     l.lock();43                     if(state%3==2){44                         System.out.println(“C”);45                         state ++;46                     }47                     l.unlock();48                 }49             }50         });51         A.start();52         B.start();53         C.start();54     }5556 }

运行结果:

A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C

 

转载地址:http://lcufm.baihongyu.com/

你可能感兴趣的文章
ANT简明教程
查看>>
Eclipse Luna WTP 与 Tomcat 8 的整合存在一个很头疼的 Bug
查看>>
小数在计算机里面的存放
查看>>
数据结构中的各种树简单解释
查看>>
我的朗科运维第七课
查看>>
CentOS的进程管理二
查看>>
https客户端证书导入
查看>>
用 PreparedStatement 向 SqlServer 中一次性插入多条记录
查看>>
Slackware-2014-0903
查看>>
CentOS下安装JDK1.7
查看>>
LDAP DIT设计参考
查看>>
iptables详解
查看>>
Protostuff 介绍
查看>>
一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
查看>>
参数验证其实可以更简明一点
查看>>
Set up Mule runtime env with mule-standalone-3.6.0
查看>>
Linux基础-linux命令:csplit
查看>>
core_framework —— 基于libev的轻量级lua网络开发框架
查看>>
回到顶部
查看>>
DES/3DES(TripleDES)加密、解密测试数据
查看>>