volatile

volatile是一个类型(type specifier),就像大家更熟悉的const一样,它是被设计用来修饰被不同线程访问和修改的变量。
volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
使用volatile 也可以达到 终止线程结束的目的。但是这个要比设置标识符更加精确。

使用的volatile 例子如下所示:

先写一个线程:

StopThread 里面使用 volatile 修饰一个 标识符 flag。

class StopThread extends Thread{

volatile  boolean flag=true;

@Override
public void run() {
   while(flag){
       System.out.println("子线程在输出");
   }
    System.out.println("StopThread子线程结束");
}

}

接下来编写一个测试类:
public class TestVolatile {
public static void main(String[] args) throws IOException {
StopThread stopThread=new StopThread();
stopThread.start();
System.out.println("任意输入字符终止StopThread:");
System.in.read();
stopThread.flag=false;
System.out.println("主线程结束");
}
}
运行测试类 :
输出结果如下所示:


image.png

子线程一直不断输出 ,直到主线程输入任意字符 改变 volatile 修饰的标识符

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 此文章出自:<a href="http://www.cnblogs.com/dolphin0520/p/39203...
    zlb阅读 761评论 0 6
  • 春暖花开,菠菜也大量上市,2块钱买回来一大捆,除了水焯晒一点干菜外,做蔬菜面条是今天午餐的主要原料之一。 小熊熊比...
    老鹤家的笑容阅读 735评论 0 0
  • 1、她是我的邻居姓谢,长得满福态的一个人,见人说话总是和和气气,我对她印象极好。 2、她未退休前在机关工作,从未一...
    张家二YY阅读 885评论 2 2
  • 假想自己,是一条水中的鱼 不希望遇到坏的天气 黑色的乌云,让空气窒息 风雨里,没有垂钓的兴致 找不到合适的鱼竿去证...
    泰安左眼皮跳跳阅读 201评论 1 9
  • 书中讲到成功=1%的天分+99%的勤奋和汗水;这里讲的天分虽然只有1%,但是我觉得它特别的重要,有些人很勤奋也很努...
    好运到来阅读 273评论 0 0

友情链接更多精彩内容