1.使用AtomicInteger进行线程间数据共享:
package threads; import java.util.concurrent.atomic.AtomicInteger; /** * @author alchimie * * 三个线程交替打印A、B、C */ public class XunleiThread1 extends Thread { private final String str[] = { "A", "B", "C" }; private final static AtomicInteger atomI = new AtomicInteger(); public XunleiThread1(String name) { this.setName(name); } @Override public void run() { while (true) { // 满10次退出打印 if (atomI.get() / 3 == 10) { break; } synchronized (atomI) { // 顺序打印A、B、C if (str[atomI.get() % 3].equals(getName())) { atomI.getAndIncrement(); System.out.println(getName()); if ("C".equals(getName())) { System.out.println(); } // 当前线程打印打印完成后唤醒其它线程 atomI.notifyAll(); } else { // 非顺序线程wait() try { atomI.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } public static void main(String[] args) { new XunleiThread1("A").start(); new XunleiThread1("B").start(); new XunleiThread1("C").start(); } }
相关推荐
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环境中实现线程间的交互和交错打印,以此来理解线程的并发行为。 首先,我们要明白进程与线程的概念。一个进程是操作系统分配资源的基本单位,它包含了运行中的...
在这个问题中,有三个线程分别代表A、B、C三个角色,它们需要按照特定顺序(ABC、BCA、CAB、...)交替打印字符。为了实现这个功能,开发者通常会用到Java的线程同步机制,如synchronized关键字、wait()和notify()...
63、List、Map、Set三个接口,存取元素时,各有什么特点? 45 64、说出ArrayList,Vector, LinkedList的存储性能和特性 46 65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set...
63、List、Map、Set三个接口,存取元素时,各有什么特点? 45 64、说出ArrayList,Vector, LinkedList的存储性能和特性 46 65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67...
63、List、Map、Set三个接口,存取元素时,各有什么特点? 45 64、说出ArrayList,Vector, LinkedList的存储性能和特性 46 65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set...
63、List、Map、Set三个接口,存取元素时,各有什么特点? 49 64、说出ArrayList,Vector, LinkedList的存储性能和特性 50 65、去掉一个Vector集合中重复的元素 50 66、Collection 和 Collections的区别。 51 67、Set...