前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >volatile关键字

volatile关键字

作者头像
宇宙之一粟
发布2020-11-24 11:35:44
2370
发布2020-11-24 11:35:44
举报
文章被收录于专栏:宇宙之_一粟宇宙之_一粟

Java 还提供了另一个关键字,用来并发访问数据——volatile。这个关键字指明,应用代码使用字段或变量前,必须重新从主内存读取值。同样,修改使用 volatile 修饰的值后,在写入变量之后,必须存回主内存。

volatile 关键字的主要用途之一是在“关闭前一直运行”模式中使用。编写多线程程序时,如果外部用户或系统需要向处理中的线程发出信号,告诉线程在完成当前作业后优雅关闭线程,那么就要使用volatile。这个过程有时叫作“优雅结束”模式。下面看个典型示例,假设处理中的线程里有下述代码,而这段代码在一个实现 Runnable 接口的类中定义:

private volatile boolean shutdown = false;

public void shutdown() {

shutdown = true;

}

public void run() {

while (!shutdown) {

// ……处理其他任务

}

}

只要没有其他线程调用 shutdown() 方法,处理中的线程就会继续处理任务(经常和非常有用的 BlockingQueue 一起使用,BlockingQueue 接口用于分配工作)。一旦有其他线程调用 shutdown() 方法,处理中的线程就会发现 shutdown 的值变成了 true。这个变化并不影响运行中的作业,不过一旦这个任务结束,处理中的线程就不会再接受其他任务,而会优雅关闭。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档