先看代码:

    private static int s=0;public static void main(String[] args) throws InterruptedException {for (int j=0;j<10;j++){Thread thread = new Thread(()->{for (int k=0;k<1000;k++){s++;}},"thread-"+j);thread.start();}Thread.sleep(3000);System.out.println(s);}

众所周知,这个程序输出结果肯定是小于等于1w的,那有几种方法可以使这个结果一定等于1w呢?

法一:使用join操作

只需要在 thread.start() 后面加上 thread.join(); 即可

    private static int s=0;public static void main(String[] args) throws InterruptedException {for (int j=0;j<100;j++){Thread thread = new Thread(()->{for (int k=0;k<1000;k++){s++;}},"thread-"+j);thread.start();// join可以阻塞主线程,所以必须等待该线程执行结束后才开启下一个线程thread.join();}System.out.println(s);}

法二:使用原子类AtomicInteger

    private static AtomicInteger s = new AtomicInteger(0);public static void main(String[] args) throws InterruptedException {for (int j=0;j<100;j++){Thread thread = new Thread(()->{for (int k=0;k<1000;k++){// getAndIncrement方法相当于 s++,incrementAndGet相当于 ++ss.getAndIncrement();}},"thread-"+j);thread.start();}//主线程睡一会等待其他线程执行结束Thread.sleep(3000);System.out.println(s);}

持续更新中,欢迎留言~~~

10个线程同时执行i++操作1000次,如何保证结果是1w相关推荐

  1. halcon图片上传到mysql_C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”...

    如题,这个问题本人已经纠结了快三个工作日了.本人不同WinFrom程序一起动就会开启10个线程,并发对10张图片进行算法处理,问题是只要程序一起动就会报"尝试读取或写入受保护的内存.这通常指 ...

  2. 对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全

    转载自 对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全 之前在公众号中问了这个问题:对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全? 三天之内收到1 ...

  3. java:编写10个线程,第一个线程从1加到10,第二个线程从11加到20……第十个线程从91加到100, 最后再,10个线程结果相加

    在生活中,人体可以同时进行各项生命活动.例如,人体可以同时进行呼吸.血液循环等等- 当我们在编写程序时,这些行为我们可以抽象为并发,而将并发完成的每一件事称为线程. 线程创建的两种传统方式 方式一:继 ...

  4. ThreadPoolExecutor(五)——线程池关闭相关操作

    补充了和Thread的interrupt操作相关的知识,回头再来看ThreadPoolExecutor中interrupt,关闭线程池等相关操作. 1.shutdown /*** Initiates ...

  5. DevelopTraining(20)---执行网络操作

    官方链接:https://developer.android.com/training/basics/network-ops/index.html 这节课讲解了网络连接参与一些基础的任务,监测网络连接 ...

  6. Java线程池ThreadPoolExecutor回收线程时执行资源回收操作

    背景 一般来说,由于Java有垃圾回收机制存在,只需要确保不要写出内存泄露的代码,不需要手动回收资源.然而有时候Java程序会依赖一些外部的资源,如在线程池中调用浏览器爬取网页时,为了避免频繁打开浏览 ...

  7. 在Android中使用Handler和Thread线程执行后台操作

    在 Android中使用Handler和Thread线程执行后台操作 对于线程的控制,我们将介绍一个 Handler类,使用该类可以对运行在不同线程中的多个任务进行排队,并使用Message和Runn ...

  8. Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作

    出于性能优化的考虑,Android的UI线程不是线程安全的.这致使我们不能在Android的UI线程中执行一些费时的操作,如下载.刷新等.Android中只允许UI线程对Activity中的UI组件进 ...

  9. //多线程龟兔赛跑问题,乌龟和兔子比赛跑200米的距离,//名叫兔子的线程每执行一次兔子就向前跑5米,每跑50米休息10毫秒,//名叫乌龟的线程每执行一次乌龟就向前跑1米,乌龟会一直跑不休息/

    //多线程龟兔赛跑问题,乌龟和兔子比赛跑200米的距离, //名叫兔子的线程每执行一次兔子就向前跑5米,每跑50米休息10毫秒, //名叫乌龟的线程每执行一次乌龟就向前跑1米,乌龟会一直跑不休息 // ...

  10. Android ThreadUtil 线程公共类,判断是否在主线程/ 子线程执行 相关操作

    前言:通常,我们写的公共的模块给别人用,但是这个模块又必须在特定的线程中执行. 比如,一个加载网络图片的的方法,需要在子线程中执行. /** * 加载网络图片 */ private void load ...

最新文章

  1. 网站性能调优开发工具: Lighthouse, Puppeteer 以及进阶部分丨 Google 开发者大会 2018...
  2. c语言 python-C语言、Java语言和python语言的区别在哪里
  3. SQL语句对象化,先看示例代码.
  4. 吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
  5. java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)
  6. IntelliJ IDEA 2020.1 瞬间定位文件夹、文件
  7. 通过 Kubeadm联网部署K8S
  8. js识别用户设备是移动端手机时跳转到手机网站
  9. 【工具】JAVA 在单元读取文件并比较
  10. apache url 包含特殊字符 404
  11. hadoop与hive
  12. Java窗口之文本框、按钮、菜单
  13. 个人免签支付接口二维码扫码支付
  14. Leetcode之Teemo Attacking 问题
  15. PAT 乙级1068 万绿丛中一点红(20 分)
  16. 新生代公链再攻「不可能三角」
  17. 创建标准化工程目录脚本
  18. IDEA 学生注册成功并使用一段时间,还要激活,并且提示No suitable licenses associated with account
  19. 七大室内定位技术PK(转自3Snews)
  20. 智安网络丨第一次听人把云计算讲这么明白!

热门文章

  1. Silverlight中使用Timer的方法
  2. windows全部启动项
  3. 利用Lua脚本语言制作魔兽WOW插件
  4. GCP+WORDPRESS建站。
  5. IEEE_Tec_Digtal Signal Analog Signal
  6. 尚学堂--面向对象2
  7. 2017.4.26-morning
  8. linux pmap命令
  9. Session操作对象的三种状态
  10. [Unity3D]Unity3D圣骑士模仿游戏开发传仙灵达到当局岛