求解

来源:7-7 交替打印

白篱

2022-01-01

public class Test {

	static int temp = 0 ;

	public static void main(String[] args) {
		new Thread(() -> {
			while (temp < 100) {
				if (temp % 2 == 0) {
					System.out.println(Thread.currentThread().getName() + "  " + temp);
					temp++;
				}
			}
		}, "偶数").start();


		new Thread(() -> {
			while (temp < 100) {
				if (temp % 2 == 1) {
					System.out.println(Thread.currentThread().getName() + "  " + temp);
					temp++;
				}
			}
		}, "奇数").start();
	}
}

偶数  0
奇数  1
偶数  2
奇数  3
偶数  4
奇数  5
偶数  6
奇数  7
偶数  8
奇数  9
偶数  10
奇数  11
.......
奇数  91
偶数  92
奇数  93
偶数  94
奇数  95
偶数  96
奇数  97
偶数  98
奇数  99
偶数  100

为什么我这段代码没加锁,结果好像也正确,也没有出现奇偶连续出现的情况

写回答

1回答

悟空

2022-01-01

不加锁,每个线程会不停的跑,浪费CPU

0
2
悟空
回复
白篱
不是的,不加锁也是先打印数字,再+1,然后另外的线程看到了这次+1,再打印下一个数字,是会轮换的
2022-01-02
共2条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程