方法千千中,开始看到这个,我立马想到了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种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
使用多线程和阻塞队列实现了ABC字母按顺序轮流打印
Java多线程连续打印abc实现方法详解 Java多线程连续打印abc实现方法详解是 Java 编程语言中的一种常见问题,旨在解决三个线程同时执行,要求打印出10个连着的abc的难题。该问题的解决方案需要使用同步机制来确保三...
Java线程技术是多任务处理的核心机制,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。在给定的“java ABC check”程序中,我们看到一个涉及三个线程——A、B、C的具体应用。这个程序的设计...
现场交替访问、等待和唤醒
这个例子展示了Java多线程的同步机制,包括synchronized关键字用于控制并发访问,以及wait()和notify()方法用于线程间的通信和协作。这些概念对于理解和解决多线程环境下的同步问题至关重要,是Java程序员必备的技能...
当一个线程打印完自己的字符后,它会唤醒其他等待的线程,并让自己进入等待状态,从而保证ABC的顺序。`join()`方法确保主线程等待所有子线程执行完毕后再继续。 在实际的多线程编程中,我们还需要考虑线程安全问题...
总结来说,这个实验主要涉及了以下几个Java多线程的关键知识点: 1. 进程与线程的概念及其关系。 2. Java中的Thread类和线程的创建与启动。 3. 使用synchronized关键字进行线程同步和互斥。 4. wait()和notify()方法...
此外,可能运用了Java的多线程技术,以实现并发处理多个订单,保证系统在高峰时段也能稳定运行。Java语言本身的跨平台性也是其选用的一个重要原因,使得系统能在多种操作系统上运行。 总结来说,ABC.rar 提供了一个...
在Java多线程环境中,线程的执行顺序是不确定的,这取决于操作系统如何调度线程。因此,主线程可能在新线程修改myString之前或之后进行打印。由于这种不确定性,答案D是正确的,打印结果无法确定。 问题42: 这是一...
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...
Java 是一种广泛使用的高级编程语言,以其跨平台、多线程、动态性等特点深受开发者喜爱。在Java中,有一些核心概念和技术点是每个学习者都需要掌握的。 1. 多线程:Java 支持多线程编程,允许程序同时执行多个任务...
例如,以下代码创建了一个新的线程,并在线程启动时打印出“abc”。 ```java new Thread(() -> System.out.println("abc")).start(); ``` 这种简洁的写法极大地提高了代码的可读性和可维护性,尤其是在处理事件...
- 提高了多线程环境下的安全性,因为不可变对象天然具有线程安全特性。 - 提升了性能,因为JVM可以缓存这些不变的字符串,避免重复创建相同的字符串对象。 - 有助于提高代码的简洁性和可读性。 2. **内部实现**...
Java是一种广泛使用的面向对象的编程语言,具有许多...综上所述,这些题目覆盖了Java的基础语法、类和接口、异常处理、多线程、IO流以及GUI编程等多个核心知识点。理解和掌握这些内容对于学习和使用Java编程至关重要。
- main函数修改为打印abc或bac,需要调整创建和调用Test对象的顺序。 - 单例模式实现:常见的有饿汉式(静态常量)、懒汉式(线程安全的双重检查锁定)和静态内部类方式。 - 使用for, while, switch循环打印字符...
在Java全国自考历年试卷中,涉及到的知识点包括基础语法、类与对象、字符串操作、多线程、文件操作以及数据库访问等。 1. 整型常量:在Java中,整型常量可以是十进制、八进制或十六进制。选项A(078)不是一个合法...