java验证i++的方法是什么
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,这篇文章主要讲解了"java验证i++的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java验证i++的方法是什么"吧!i++的线程不安全
千家信息网最后更新 2025年01月26日java验证i++的方法是什么
这篇文章主要讲解了"java验证i++的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java验证i++的方法是什么"吧!
i++的线程不安全
i++是我们从开始学写代码时就一直在写的一个语句,也时常有前辈说过,i++是线程不安全的,我们今天就来一起模拟下多个线程同时对i进行++操作
代码如下:
import java.util.concurrent.CountDownLatch;
public class IDemo {
public static void main(String[] args) {
// 用CountDownLatch来计数,其主要有两个方法
// 1是await,使当前线程暂停
// 2是countDown,使当前计数器减1,如果计数器减为0,则暂停的线程可以继续执行
CountDownLatch latch = new CountDownLatch(1);
// new了一个类,里面持有为0的 i
TestCounter counter = new TestCounter();
// 定义了线程操作,先调用latch的await方法等待计数器变成0
// 然后执行counter.add方法,让i++;
Runnable runnable = () -> {
try {
latch.await();
counter.add();
} catch (InterruptedException e) {
e.printStackTrace();
}
};
// 循环1000次,新建1000个线程
for (int i = 0; i < 1000; i++) {
Thread t = new Thread(runnable);
t.start();
}
// 这里调用latch.countDown方法,让计数器减为0,则所有暂停的线程都可以执行
try {
latch.countDown();
// 主线程暂停3秒,让子线程可以执行完
Thread.sleep(3000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 输出最后执行完i++后i的值
System.out.println(counter.i);
}
/**
* 使用内部类的方式,封装i和i++操作
*/
static class TestCounter {
int i = 0;
void add() {
i++;
}
}
}
输出结果如下:
多次运行会有不同的结果
感谢各位的阅读,以上就是"java验证i++的方法是什么"的内容了,经过本文的学习后,相信大家对java验证i++的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
线程
方法
验证
计数器
学习
安全
代码
内容
结果
输出
不同
两个
前辈
同时
多个
就是
思路
情况
文章
方式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳通程软件开发
单用户模式启动服务器
音频存入mysql数据库
重庆软件开发培训班价格
腾讯云一个人买几个服务器
开原网络技术员招聘
如何对服务器加固
中二网络技术安全考试试卷
天津常见软件开发配置
华农数据库实验报告4
网络安全0基础免费
大连市网络安全宣传活动
我的世界晨曦服务器怎么圈地
网络安全研究展望
网络安全宣传周在咸阳
vps建数据库
扫号 数据库
太原理工数据库
网络安全法发布了吗
云容器引擎对于软件开发有什么用
国内四大数据库知网
我的世界启动后关闭内置服务器
刀剑乱舞没有服务器怎么回事
如何对服务器加固
兴隆各村网络安全宣传
网络安全检讨书3000字
网络安全培训课程表
网络安全专用产品应当
软件开发工作一般工资标准
Db 2 数据库状态