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

简介:

题目:有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();
11
12         Thread A = new Thread(new Runnable(){
13             @Override
14             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             @Override
27             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             @Override
40             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     }
55
56 }

运行结果:
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

 

相关文章
|
Java
Java编程:理解while循环的使用
总结而言, 使用 while 迴圈可以有效解决需要多次重复操作直至特定條件被触发才停止執行任务场景下问题; 它简单、灵活、易于实现各种逻辑控制需求但同时也要注意防止因邏各错误导致無限迁璇発生及及時處理可能発生异常以确保程序稳定运作。
687 0
|
数据采集 监控 调度
干货分享“用 多线程 爬取数据”:单线程 + 协程的效率反超 3 倍,这才是 Python 异步的正确打开方式
在 Python 爬虫中,多线程因 GIL 和切换开销效率低下,而协程通过用户态调度实现高并发,大幅提升爬取效率。本文详解协程原理、实战对比多线程性能,并提供最佳实践,助你掌握异步爬虫核心技术。
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
535 0
|
Java 数据挖掘 调度
Java 多线程创建零基础入门新手指南:从零开始全面学习多线程创建方法
本文从零基础角度出发,深入浅出地讲解Java多线程的创建方式。内容涵盖继承`Thread`类、实现`Runnable`接口、使用`Callable`和`Future`接口以及线程池的创建与管理等核心知识点。通过代码示例与应用场景分析,帮助读者理解每种方式的特点及适用场景,理论结合实践,轻松掌握Java多线程编程 essentials。
900 5
|
监控 搜索推荐 Java
Java 多线程最新实操技术与应用场景全解析:从基础到进阶
本文深入探讨了Java多线程的现代并发编程技术,涵盖Java 8+新特性,如CompletableFuture异步处理、Stream并行流操作,以及Reactive编程中的Reactor框架。通过具体代码示例,讲解了异步任务组合、并行流优化及响应式编程的核心概念(Flux与Mono)。同时对比了同步、CompletableFuture和Reactor三种实现方式的性能,并总结了最佳实践,帮助开发者构建高效、扩展性强的应用。资源地址:[点击下载](https://pan.quark.cn/s/14fcf913bae6)。
705 3
|
算法 Java 程序员
黑马程序员Java零基础视频教程笔记-判断和循环 2
黑马程序员Java零基础视频教程笔记-判断和循环
223 0
|
Java 程序员
黑马程序员Java零基础视频教程笔记-判断和循环 1
黑马程序员Java零基础视频教程笔记-判断和循环
333 0

热门文章

最新文章