多线程共享数据-非线程安全示例
发布日期:2022-04-11 08:52:53
浏览次数:20
分类:博客文章
本文共 1004 字,大约阅读时间需要 3 分钟。
多线程共享数据-非线程安全示例
package com.stono.thread2;import java.util.concurrent.atomic.AtomicInteger;public class Page11 extends Thread{ private int count = 5; private AtomicInteger c2 = new AtomicInteger(5); @Override public void run() { super.run(); // 此处会出现非线程安全问题 count --; System.out.println("由 "+this.currentThread().getName()+" 计算, count= "+count); // 这个线程安全 c2.decrementAndGet(); System.out.println("由 "+this.currentThread().getName()+" 计算, AtomicInteger= "+c2.get()); } public static void main(String[] args) { Page11 page11 = new Page11(); Thread a = new Thread(page11, "A"); Thread b = new Thread(page11, "B"); Thread c = new Thread(page11, "C"); Thread d = new Thread(page11, "D"); Thread e = new Thread(page11, "E"); a.start(); b.start(); c.start(); d.start(); e.start(); }}
使用AtomicInteger可以实现线程安全处理,但是输出顺序不是固定的;
也可以在run()方法前面加上synchronized进行修饰;
转载地址:https://www.cnblogs.com/stono/p/8370621.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月27日 22时25分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
游戏性能指标参考,游戏质量白皮书下载
2019-04-27
游戏帧同步学习笔记
2019-04-27
Mac苹果电脑分辨率不够用,安装SwitchResX这个软件完美解决
2019-04-27
iOS Info.plist知多少
2019-04-27
XCode9之后命令打包需要使用OptionExport.plist
2019-04-27
关于iOS XCode的entitlements文件
2019-04-27
Airtest自动化测试神器,教你实现Unity自动化测试
2019-04-27
模拟器连接端口汇总和常用ADB命令
2019-04-27
ShaderGraph使用教程与各种特效案例:Unity2020(持续更新)
2019-04-27
Unity爆炸、闪电、火焰、雷雨特效Demo
2019-04-27
使用python登录和访问Confluence
2019-04-27
Unity2020中使用MemoryProfile卡死和报错的问题
2019-04-27
Unity中加载Texture2D不断消耗内存的问题
2019-04-27
手把手教你使用Unity制作一个飞机喷射火焰尾气的粒子效果
2019-04-27
gitee使用教程,创建项目仓库并上传代码
2019-04-27
Unity3D 上传日志
2019-04-27
Unity3D 序列帧
2019-04-27