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

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

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

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class PrintABC {public static int cnt = 0;public static final int COUNT = 30;public static void main(String[] args) {final Lock lock = new ReentrantLock();Thread A = new Thread(new Runnable(){@Overridepublic void run() {while(true){lock.lock();if(cnt>=COUNT){lock.unlock();return;}if(cnt%3==0){System.out.println("A");cnt++;}lock.unlock();}                }});Thread B = new Thread(new Runnable(){public void run(){while(true){lock.lock();if(cnt>=COUNT){lock.unlock();return;}if(cnt%3==1){System.out.println("B");cnt++;}lock.unlock();}}});Thread C = new Thread(new Runnable(){public void run(){while(true){lock.lock();if(cnt>=COUNT){lock.unlock();return;}if(cnt%3==2){System.out.println("C");cnt++;}lock.unlock();}}});A.start();B.start();C.start();}}

程序运行结果如下:

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://www.mzph.cn/news/543593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql if语句后面执行两个语句_MySQL的if,case语句使用总结

Mysql的if既可以作为表达式用&#xff0c;也可在存储过程中作为流程控制语句使用&#xff0c;如下是做为表达式使用&#xff1a;IF表达式IF(expr1,expr2,expr3)如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL)&#xff0c;则 IF()的返回值为expr2; 否则返回值则…

mac mysql 默认字符集_MacOS中Mysql设置默认字符集

一、查看字符集mysql> show variables like character%;-------------------------------------------------------------------------------------| Variable_name | Value |----------------------------…

原创 通过PEB获得进程路径 (附完整工程)

完整工程&#xff1a;http://files.cnblogs.com/files/Gotogoo/%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E5%99%A8%28x86%26%26x64%29.zip PEB&#xff08;Process Environment Block&#xff0c;进程环境块&#xff09;存放进程信息&#xff0c;每个进程都有自己的PEB信息。位于…

土豚mysql_树莓派LNMP配置

修改软件源1.首先备份源列表&#xff1a;sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup2.而后打开sources.list文件修改&#xff1a;sudo vim /etc/apt/sources.list软件源可已在网上查查&#xff0c;有ubuntu官方的、阿里云的、清华的等需要注意首先查看自己的…

Windbg SOS and CLR版本不一致的解决方案

由于测试服务环境与Windbg运行环境的差异&#xff0c;这就可能出现Windbg在分析dump文件时.net sos.dll和mscordacwks.dll版本不一致问题&#xff0c;从而导致windbg调试器的扩展命令无法正常使用&#xff0c;具体的解决方法如下&#xff1a;1.首先定义Windgb symbols路径&…

mysql镜像远程连接_docker 创建mysql镜像,并成功进行远程连接

1.安装1.1 拉取镜像docker pull mysql拉取成功可以验证一下docker images1.2 创建并启动一个mysql容器docker run --name ly-mysql -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -d mysql–name&#xff1a;给新创建的容器命名&#xff0c;此处命名为ly-mysql-e&#xff1a;配置…

[DIV/CSS] 【译】60个有用CSS代码片段

2019独角兽企业重金招聘Python工程师标准>>> 1、垂直对齐 如果你用CSS&#xff0c;则你会有困惑&#xff1a;我该怎么垂直对齐容器中的元素&#xff1f;现在&#xff0c;利用CSS3的Transform&#xff0c;可以很优雅的解决这个困惑&#xff1a; .verticalcenter{posi…

java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

大家好&#xff0c;乐字节的小乐又和大家见面了。这次要给大家讲述的是Java常用类。主要有以下知识点&#xff1a; 字符串相关类&#xff08;String 、StringBuffer、StringBuilder&#xff09; 算法及数组工具类(Arrays) 日期类 基本数据类型包装类 Math类 File类 枚举类一、 …

IOS之Foundation之探究学习Swift实用基础整理一

2019独角兽企业重金招聘Python工程师标准>>> 1 import Foundation2 3 //加载网络数据&#xff0c;查找数据的字符串4 let dataurl "http://api.k780.com:88/?appweather.city&&appkey10003&signb59bc3ef6191eb9f747dd4e83c99f2a4&formatjson…

sql 时间 没有日期_SQL-补充:日期和时间戳互转

补充&#xff1a;日期和时间戳互转1. 日期转时间戳-- 转十位select UNIX_TIMESTAMP(2018-12-25 12:25:00);结果&#xff1a;1545711900-- 转十三位SELECT REPLACE(unix_timestamp(current_timestamp(3)),.,);结果&#xff1a;15457119000212. 时间戳转日期 FROM_UNIXTIME(unix_…

CentOS 安装 Tomcat

1、Tomcat官网获&#xff08;http://tomcat.apache.org/&#xff09;取tar.gz文件的下载地址2、下载&#xff1a;# wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz3、解压&#xff1a;# tar -zxvf apache-tomcat-8.0.24.tar.gz 4、复制…

mysql sqlite 性能优化_MySQL和Sqlite3性能测试

测试条件&#xff1a;i5-44603.2G&#xff0c;普通机械硬盘。MySql: 5.0.45-community-nt,32bit, innodb引擎,innodb_flush_log_at_trx_commit0Sqlite3: SynchronousOff,LockingMode ExclusiveTableScript:MySql:CREATE TABLE test (id int(10) unsigned NOT NULL auto_increm…

win7-64bit 下oracle11g plsql 的正确安装

本人在PC机上安装了Oracle 11g 版本号的数据库服务&#xff0c;通过PL/SQL连接数据库时总是无法连接&#xff0c;由于PLSQL没有64位版。通过32bit的PLSQL连接64位的Oracle时就会报错&#xff0c;第一种须要安装一个32位的oracle客户端工具instantclient进行转换&#xff0c;另外…

3.9 第二次作业

一、信息系统集成有哪些特点&#xff1f;信息系统集成要以满足客户需求为根本出发点。信息系统集成不只是设备选择和供应&#xff0c;更重要的&#xff0c;它是具有高技术含量的工程过程&#xff0c;要面向用户需求提供全面的解决方案&#xff0c;其核心是软件。系统集成的最终…

vue那个生命周期函数操作dom_vue生命周期实例小结

本文实例分析了vue生命周期。分享给大家供大家参考&#xff0c;具体如下&#xff1a;每个Vue实例都存在完整的生命周期&#xff0c;经历从创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程。如下图所示vue的完整生命周期可分为三个阶段&#xff1a;初…

python 字符串函数 center_Python字符串处理

Python字符串处理Python处理字符串是一个基本操作&#xff0c;需要熟记于心&#xff0c; 这篇python字符串处理文章总结了大多数常用的字符串处理函数、策略&#xff0c;供大家以及自己参考使用。Part I 常见处理函数1. String.find(sub, start0, endlen(string))检测sub是否包…

关于apache的虚拟主机配置

增加用户账号的验证touch /data/.htpasswd[rootuser10data]# htpasswd -c /data/.htpasswd user1 #新增第一个账号[rootuser10data]# htpasswd /data/.htpasswd user2 #新增第二个账号编辑/usr/local/apache2/conf/extra/httpd-vhosts.conf<VirtualHost *:80&g…

python字符串垂直输出加循环_将漂亮的soup嵌套循环垂直输出到datafram中

我如何将这个web抓取(数据)的输出放入pandas数据帧&#xff1f;下面的代码只显示一行数据&#xff0c;并且是垂直排列的。如何使数据帧看起来完全像打印(数据)-即水平&#xff1f;另外&#xff0c;我是个新手&#xff0c;这可不是Python。请建议如何使其成为函数(&#xff1f;)…

不求很多,够用就好

Hi&#xff0c;我是一名在校学生&#xff0c;目前大三&#xff0c;希望在前端方向上发展&#xff0c;最好以后是一个真全栈 曾经也会搜索一堆的工具&#xff0c;后面发现 只有正确的使用合理数量的工具&#xff0c;才能加快开发步伐 下面简单推荐几个实用工具&#xff0c;强大并…

Android控件第6类——杂项控件

1、Toast Toast用于显示提示信息。 Toast不会获得焦点&#xff0c;没法关闭&#xff0c;过段时间会自动消失。 使用方法&#xff1a;Toast.makeText获得Toast&#xff0c;并设置相关属性。调用Toast对象的show方法显示。 默认情况&#xff0c;Toast只弹出一段话&#xff0c;如果…