`

Java多线程1--三线程打印ABC

    博客分类:
  • Java
 
阅读更多

建立3个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC

 

import java.util.concurrent.TimeUnit;

public class ThreadABC {

	public static void main(String[] args) throws InterruptedException {
		Object a = new Object();
		Object b = new Object();
		Object c = new Object();

		Thread pa = new Thread(new PrintThread("A", c, a)),
				pb = new Thread(new PrintThread("B", a, b)),
				pc = new Thread(new PrintThread("C", b, c));
		pa.start();
		TimeUnit.MILLISECONDS.sleep(100L);
		pb.start();
		TimeUnit.MILLISECONDS.sleep(100L);
		pc.start();

	}

}

class PrintThread implements Runnable {
	private String name;
	private Object prev;
	private Object self;

	public PrintThread(String name, Object prev, Object self) {
		this.name = name;
		this.prev = prev;
		this.self = self;
	}

	@Override
	public void run() {
		int i = 10;
		while (i-- > 0) {
			try {
				synchronized (prev) {
					synchronized (self) {
						System.out.print(name);
						self.notify();
					}
					
					prev.wait();
				}
			} catch (InterruptedException e) {
				System.out.println("Interrupted");
			}
		}
	}
}

 

分享到:
评论

相关推荐

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    Java多线程--等待所有子线程执行完的五种方法.docx

    在Java多线程编程中,有时我们需要确保所有子线程执行完毕后再进行后续操作,例如在并发测试、数据聚合或资源清理等场景。本篇文章将详细介绍五种在Java中等待所有子线程执行完的方法。 ### 方法一:使用`sleep`...

    WHUT-java多线程实验-第三周-文件上传和下载.zip

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了效率和资源利用率。在“WHUT-java多线程实验-第三周-文件上传和下载.zip”这个实验中,我们将重点探讨如何在多线程环境中实现文件...

    基于java的开发源码-超简单Java多线程填表源码.zip

    基于java的开发源码-超简单Java多线程填表源码.zip 基于java的开发源码-超简单Java多线程填表源码.zip 基于java的开发源码-超简单Java多线程填表源码.zip 基于java的开发源码-超简单Java多线程填表源码.zip 基于java...

    Java多线程与线程安全实践-基于Http协议的断点续传

    Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点...Java多线程与

    JAVA多线程与线程安全实践-基于Http协议的断点续传.rar

    JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多...

    Java 多线程课程的代码及少量注释.zip

    Java 多线程主题1- Java 多线程启动线程2- Java 多线程Volatile – 基本线程通信3- Java 多线程同步4- Java 多线程锁对象5- Java 多线程线程池6- Java 多线程倒计时闩锁7- Java 多线程生产者-消费者8- Java 多线程...

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....

    Java多线程-Socket编程

    Java 多线程-Socket 编程 Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口...

    Java多线程与线程安全实践-基于Http协议的断点续传.zip

    Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与...

    WHUT-java多线程实验-第六、七周-网络编程和多线程.zip

    WHUT-java多线程实验-第六、七周-网络编程和多线程(IDEA实现) 能够实现用户登录和文件管理的多线程和网络传输

    WHUT-java多线程实验-第二周-异常处理.zip

    Java多线程是Java编程中的核心概念,尤其在并发编程领域中扮演着至关重要的角色。在实际开发中,多线程能充分利用系统资源,提高程序的执行效率。本实验主要关注的是Java多线程中的异常处理,这在保证程序稳定性和...

    Java多线程与线程安全实践-基于Http协议的断点续传(毕业设计+课程设计)

    Java多线程与线程安全实践-基于Http协议的断点续传(毕业设计+课程设计)Java多线程与线程安全实践-基于Http协议的断点续传(毕业设计+课程设计)Java多线程与线程安全实践-基于Http协议的断点续传(毕业设计+课程...

    WHUT-java多线程实验-第五周-数据库.zip

    WHUT-java多线程实验-第五周-数据库(IDEA实现) 本实验目标在实验 (4) 的基础上实现与本机数据库的连接。即对 DataProcessing 类进行改进,不再使用 Hashtable 存储用户与档案信息,转而使用 JDBC 编程方式实现对...

    Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar

    Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar Java开发案例-springboot-61-整合asyncTool京东多线程...

    WHUT-java多线程实验-第四周-GUI.zip

    1. **Java多线程**:Java通过`Thread`类和`Runnable`接口支持多线程编程。创建新线程有两种主要方式:继承`Thread`类或实现`Runnable`接口。在Java中,主线程负责执行程序的主要逻辑,而其他线程可以并行执行特定...

    基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip

    基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于...

    java课程设计 三线程接力

    在Java课程设计中,"三线程接力"是一个典型的多线程编程问题,它涉及到并发控制、线程间协作以及时间间隔的精确控制。在这个项目中,我们有三个颜色的按钮——红色、蓝色和绿色,它们分别在特定的时间间隔内进行操作...

Global site tag (gtag.js) - Google Analytics