3个线程顺序打印ABC10次

这篇博客探讨了如何使用三个线程按顺序打印字母ABC,通过设置标志位和利用同步代码块确保同一时间只有一个线程执行。博主分享了一个使用AtomicInteger实现的简洁方案,该方案线程安全,方便扩展至更多线程。
摘要由CSDN通过智能技术生成
今年,唯品会的一道笔试题是三个线程顺序打印ABC10次,当时写得很乱,也写错了,现在给出我的解决方法:
package deadLockThread;

public class PrintThread {
	private static boolean flga1 = true;
	private static boolean flga2 = false;
	private static boolean flga3 = false;

	public static void main(String[] args) {
		final PrintThread o = new PrintThread();
		Thread t1 = new Thread(new Runnable() {

			@Override
			public void run() {
				for (int i = 0; i < 10; i++) {
					while (true) {
						synchronized (o) {

							if (!flga1) {
								try {
									o.wait();
								} catch (InterruptedException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}

							} else {
								System.out.println(Thread.currentThread()
										.getName());
								flga1 = false;
								flga2 = true;
								flga3 = false;
								o.notifyAll();
								break;
							}
						}
					}

				}

			}
		}, &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值