java 全局变量线程安全_Java中的线程安全全局变量
我试图了解
java中的线程安全机制,我需要一些帮助.我上课了:
public class ThreadSafe {
private Executor executor = new ScheduledThreadPoolExecutor(5);
private long value = 0;
public void method() {
synchronized (this) {
System.out.println(Thread.currentThread());
this.value++;
}
}
private synchronized long getValue() {
return this.value;
}
public static void main(String... args) {
ThreadSafe threadSafe = new ThreadSafe();
for (int i = 0; i < 10; i++) {
threadSafe.executor.execute(new MyThread());
}
}
private static class MyThread extends Thread {
private ThreadSafe threadSafe = new ThreadSafe();
private AtomicBoolean shutdownInitialized = new AtomicBoolean(false);
@Override
public void run() {
while (!shutdownInitialized.get()) {
threadSafe.method();
System.out.println(threadSafe.getValue());
}
}
}
}
在这里,我试图使值线程安全,一次只能由一个线程访问.当我运行这个程序时,我发现即使我将它包装在synchronized块中,也有多个线程对该值进行操作.当然这个循环将是无限的,但它只是一个例子,我几秒后手动停止这个程序,所以我有:
2470
Thread[pool-1-thread-3,5,main]
2470
Thread[pool-1-thread-5,5,main]
2470
Thread[pool-1-thread-2,5,main]
不同的线程正在访问并更改此值.有人可以向我解释为什么会这样吗?以及如何使这个全局变量线程安全?
java 全局变量线程安全_Java中的线程安全全局变量相关推荐
- java多线程 线程安全_Java中的线程安全
java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...
- java 守护线程 作用_java中守护线程的一些概念和用法
网上的资料中,守护线程的功能一般都是"只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用 ...
- python 在主线程开线程_Python开启线程,在函数中开线程的实例
逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...
- python可以开多少线程_Python开启线程,在函数中开线程的实例
逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...
- java中怎么判断一段代码时线程安全还是非线程安全_Java 中的多线程你只要看这一篇就够了...
引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个 ...
- java线程池怎么创建_java中的线程池,如何创建?
Java中的线程池它是线程的容器,或者(换句话说,它是具有执行任务能力的线程的集合). 我们可以使用ThreadPool框架来定位(或实现)线程池. 线程池可以包含多个线程.每当我们执行任何任务时,线 ...
- java 获取线程某个_Java中如何唤醒“指定的“某个线程
熟悉线程操作的小朋友应该知道,Java中线程的挂起和唤醒一般用synchronized + wait + notify完成. 比如: synchronized(o) { o.wait(); //wai ...
- java中线程总结_java中多线程学习笔记总结
线程的简单学习笔记: 1.进程与线程的概念 进程:从用户角度看进程是应用程序的一个执行过程. 从操作系统核心角度看进程代表的是操作系统分配的内存和CPU时间片等资源的基本单位,是为正在运行的程序提供的 ...
- java 终止方法_Java中终止线程的三种方法
Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...
最新文章
- iptables相关管理命令
- 「AI不惑境」数据压榨有多狠,人工智能就有多成功
- iOS 解决导航栏pop返回时出现黑块问题!
- 【整理总结】Visual Studio 扩展和更新
- Kattis-What does the fox say 字符串处理+STL
- 一个关于c++ list迭代器的问题
- Actor-ES框架:消息发布器与消息存储器
- mysql表统一编码_PHP MySQL Apache统一编码
- propertysource注解 找不到文件_电脑提示Windows找不到文件?试试这两个技巧,轻松解决!...
- 配置数据库连接池的时候。
- CPU里都有几十亿个晶体管,万一坏掉几个还能用吗?
- bzoj1113[Poi2008]海报PLA
- golang 示例测试example_go语言从例子开始之Example37.Go 状态协程
- 解决pod没有权限问题
- 教你从零开始学习数据库!
- excel转置怎么操作_收藏!Excel表格常见问题,超详细的解决方案
- SSD模型物体检测(水下生物识别)
- 出租车收费管理系统(MyEclipse+Java)
- android ibeacon距离,iBeacon使用蓝牙连接范围精确到1-3米
- 微信开发者工具-真机调试,可查看接口信息
热门文章
- python输出矩阵图片_Python图片与其矩阵数据互相转换
- 命名规范与注释规范概述
- abbex 区块学院如何交易之 第一章 你是谁?交易圈中的幽灵
- 使用Flutter重构斗鱼APP
- oracle rownum用法排序,利用rownum分组排序去重
- 关于使用友盟第三方平台集成第三方分享
- MySql时间日期函数及格式化详解
- html页面显示天气,HTML – 如何显示openweathermap天气图标
- 用计算机和手算标准差不一致,【PMP概念区分16】变量抽样
- 共享单车拿车还车java模拟_共享单车停放管理系统及其还车方法与流程