`

java 多线程打印ABC

阅读更多

方法千千中,开始看到这个,我立马想到了cyclicBarrier,能让ABC在打印在一组,可是控制不了ABC打印的顺序

 

后来自己用了一个最简单的synchronize的循环实现了,可以感觉没什么成就感

 

最后看了网上一个例子,思路很有意思,但是也不是我想要的,代码还是分享一下,请高手一眼扫过:

 

 

package dirk.zhang;

public class PrintABC {
	
	public static void main(String[] arg)
	{
		Data d = new Data();
		Threadp p1 = new Threadp("a","b",d);
		Threadp p2 = new Threadp("b","c",d);
		Threadp p3 = new Threadp("c","a",d);
		p1.start();
		p2.start();
		p3.start();
		
	}
}

class Threadp extends Thread
{
	private final  String name;
	private final  String next;
	private final  Data d;
	private int count = 10;
	
	Threadp(String name,String next,Data d)
	{
		this.name = name;
		this.next = next;
		this.d = d;
	}
	
	@Override
	public void run()
	{
		while(count>0)
		{
			if(d.flagName.equals(name))
				synchronized (d) {
				System.out.print(name);
				d.flagName = next;
				count--;
				}
		}
		
	}
	
	private void printname()
	{
		System.out.println(name);
	}
	
}

class Data
{
	public String flagName;
	public Data()
	{
		flagName = "a";
	}
	
}

 

怎么样,看完之后感觉也很平平淡淡,谁有什么更好的方法来showshow

 

分享到:
评论

相关推荐

    java多线程每个线程挨着打印ABC的4种实现方式

    java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...

    java多线程实现轮流打印ABC

    使用多线程和阻塞队列实现了ABC字母按顺序轮流打印

    Java多线程连续打印abc实现方法详解

    Java多线程连续打印abc实现方法详解 Java多线程连续打印abc实现方法详解是 Java 编程语言中的一种常见问题,旨在解决三个线程同时执行,要求打印出10个连着的abc的难题。该问题的解决方案需要使用同步机制来确保三...

    java ABC check

    Java线程技术是多任务处理的核心机制,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。在给定的“java ABC check”程序中,我们看到一个涉及三个线程——A、B、C的具体应用。这个程序的设计...

    juc多线程交替打印ABC、熟悉lock的唤醒机制

    现场交替访问、等待和唤醒

    java代码-三个线程轮流输出abc

    这个例子展示了Java多线程的同步机制,包括synchronized关键字用于控制并发访问,以及wait()和notify()方法用于线程间的通信和协作。这些概念对于理解和解决多线程环境下的同步问题至关重要,是Java程序员必备的技能...

    线程分解详细

    当一个线程打印完自己的字符后,它会唤醒其他等待的线程,并让自己进入等待状态,从而保证ABC的顺序。`join()`方法确保主线程等待所有子线程执行完毕后再继续。 在实际的多线程编程中,我们还需要考虑线程安全问题...

    三个线程交错输出

    总结来说,这个实验主要涉及了以下几个Java多线程的关键知识点: 1. 进程与线程的概念及其关系。 2. Java中的Thread类和线程的创建与启动。 3. 使用synchronized关键字进行线程同步和互斥。 4. wait()和notify()方法...

    ABC.rar_ABC_点菜系统_点菜系统java_餐厅 点菜系统_餐厅点菜

    此外,可能运用了Java的多线程技术,以实现并发处理多个订单,保证系统在高峰时段也能稳定运行。Java语言本身的跨平台性也是其选用的一个重要原因,使得系统能在多种操作系统上运行。 总结来说,ABC.rar 提供了一个...

    some problems met in java learning

    在Java多线程环境中,线程的执行顺序是不确定的,这取决于操作系统如何调度线程。因此,主线程可能在新线程修改myString之前或之后进行打印。由于这种不确定性,答案D是正确的,打印结果无法确定。 问题42: 这是一...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

    java复习题答案[定义].pdf

    Java 是一种广泛使用的高级编程语言,以其跨平台、多线程、动态性等特点深受开发者喜爱。在Java中,有一些核心概念和技术点是每个学习者都需要掌握的。 1. 多线程:Java 支持多线程编程,允许程序同时执行多个任务...

    Java高级之并发编程.md

    例如,以下代码创建了一个新的线程,并在线程启动时打印出“abc”。 ```java new Thread(() -> System.out.println("abc")).start(); ``` 这种简洁的写法极大地提高了代码的可读性和可维护性,尤其是在处理事件...

    java中的字符串处理

    - 提高了多线程环境下的安全性,因为不可变对象天然具有线程安全特性。 - 提升了性能,因为JVM可以缓存这些不变的字符串,避免重复创建相同的字符串对象。 - 有助于提高代码的简洁性和可读性。 2. **内部实现**...

    java复习题答案.pdf

    Java是一种广泛使用的面向对象的编程语言,具有许多...综上所述,这些题目覆盖了Java的基础语法、类和接口、异常处理、多线程、IO流以及GUI编程等多个核心知识点。理解和掌握这些内容对于学习和使用Java编程至关重要。

    Java程序员面试题大全

    - main函数修改为打印abc或bac,需要调整创建和调用Test对象的顺序。 - 单例模式实现:常见的有饿汉式(静态常量)、懒汉式(线程安全的双重检查锁定)和静态内部类方式。 - 使用for, while, switch循环打印字符...

    Java全国自考历年试卷答案.doc

    在Java全国自考历年试卷中,涉及到的知识点包括基础语法、类与对象、字符串操作、多线程、文件操作以及数据库访问等。 1. 整型常量:在Java中,整型常量可以是十进制、八进制或十六进制。选项A(078)不是一个合法...

Global site tag (gtag.js) - Google Analytics