在今天的美团二面中,遇到了这个问题,一时间只想起来了解法,手写没有写出来
利用volatile的可见性,来对于线程进行一些获取,进行改变~
package mianTest;
// 单纯的利用boolean变量来写 加一个volatile关键字:保证他的可见性
public class Demo01 {
volatile static int flag = 0;
public static void main(String[] args) {
Thread myThread = new Thread(new myThread1());
Thread myThread2 = new Thread(new myThread2());
myThread.start();
myThread2.start();
}
public static class myThread1 implements Runnable {
@Override
public void run() {
int i = 0;
while (i < 10) {
if (flag == 0) {
System.out.println(Thread.currentThread().getName() + " = " + i);
i += 2;
flag = 1;
}
}
}
}
public static class myThread2 implements Runnable {
@Override
public void run() {
int i = 1;
while (i < 10) {
if (flag == 1) {
System.out.println(Thread.currentThread().getName() + " = " + i);
i += 2;
flag = 0;
}
}
}
}
}