volatile的问题
下面代码大致想做到当主线程将toBeStop更新后所有线程将停止退出执行
import java.util.Arrays;
public class VolatileTest
{
volatile boolean toBeStop;
public static void main(String[] args)
{
VolatileTest test = new VolatileTest();
for(int i = 0 ; i<5;i++)
{
Thread t = test.new MyThread();
t.start();
}
while(Thread.activeCount()>1)
{
Thread[] active = new Thread[5];
System.out.println("还有线程在运行"+Thread.enumerate(active)+":["+Arrays.asList(active)+"]");
if(!test.toBeStop)
test.toBeStop = true;
}
}
class MyThread extends Thread
{
@Override
public void run()
{
int i = 0;
while(!toBeStop)
{
System.out.println(toBeStop+" "+this.getName()+":"+i++);
}
}
}
}
相关推荐
Java并发编程(18)第五篇中volatile意外问题的
Java并发编程(18)第五篇中volatile意外问题的正确分析解答(含代码)编程开发技术共5页.pdf.zip
C语言 volatile与const同时使用应注意的问题
const和volatile放在一起的意义在于: (1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心;(2)另一个程序段则完全有可能修改,因此编译器最好不要做太激进的优化。 “const”含义是“请做为常量使用”,而并非“放心吧,那肯定是个常量”。“volatile”的含义是“请不要做没谱的优化,这个值可能变掉的”,而并非“你可以修改这个值”。因此,它们本来就不是矛盾的。 const修饰的变量不允许这里修改不代表不允许别处修改,比如: 代码如下:int i = 5;const int* p = &i;*p = 6; // 不可以;i = 7; //
从volatile说到i++的线程安全问题.docx
从volatile说到i++的线程安全问题.docx
JUC包含线程,线程池,CAS,volatile等底层原理,以及相关问题的解决方式以及相关工具类的使用
JUC包含线程,线程池,CAS,volatile等底层原理,以及相关问题的解决方式以及相关工具类的使用,包含但不限于:synchronize的底层原理,线程的执行流程,lock锁底层原理等,线程不安全的集合以及底层等.
Java 并发⾯试问题之 volatile 到底是什么?
场景引入,问题初现 很多同学出去⾯试,都会被问到⼀个常⻅的问题:说说你对 volatile 的理解? 不少初出茅庐的同学可能会有点措⼿不及,因为可能就是之前没关注过这个。但是⽹上百度⼀下呢,不少⽂章写的很好,但是理论扎的太深,⽂字太多,图太少,让⼈有点难以理解。 基于上述痛点,这篇⽂章尝试站在年轻同学的⻆度,⽤最简单的⼤⽩话,加上多张图给⼤家说⼀下,volatile 到底是什么? 当然本⽂不会把理论扎的太深,因为⼀下⼦扎深了⽂字太多,很多同学还是会不好理解。 本⽂仅仅是定位在⽤⼤⽩话的语⾔将 volatil


Java SE
