使用atomicInteger解决了原子性问题(AtomicInteger保证每次只能一个线程操作count)

package com.cppdy;

import java.util.concurrent.atomic.AtomicInteger;

class MyThread10 extends Thread {

    //AtomicInteger每次只能一个线程操作count
private static AtomicInteger count = new AtomicInteger(0); @Override
public void run() {
addCount();
} public void addCount() {
for (int i = 0; i < 1000; i++) {
count.incrementAndGet();
}
System.err.println(getName()+"--"+count.get());
}
} public class ThreadDemo10 { public static void main(String[] args) throws Exception {
MyThread10[] mtList = new MyThread10[10];
for (int i = 0; i < mtList.length; i++) {
mtList[i]=new MyThread10();
}
for (int i = 0; i < mtList.length; i++) {
mtList[i].start();
}
} }

原子性:保证10个线程都对count加了1000次,最终结果为10000

java多线程快速入门(十四)的更多相关文章

  1. java多线程快速入门(四)

    通过匿名内部类的方法创建多线程 package com.cppdy; //通过匿名内部类的方法创建多线程 public class ThreadDemo2 { public static void m ...

  2. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  3. java 多线程 快速入门

    ------------恢复内容开始------------ java 多线程 快速入门 1. 进程和线程 什么是进程? 进程是正在运行的程序它是线程的集合 进程中一定有一个主线程 一个操作系统可以有 ...

  4. java多线程快速入门(二十二)

    线程池的好处: 避免我们过多的去new线程,new是占资源的(GC主要堆内存) 提高效率 避免浪费资源 提高响应速度 作用:会把之前执行某个线程完毕的线程不会释放掉会留到线程池中给下一个调用的线程直接 ...

  5. java多线程快速入门(二十)

    1.Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2.将线程不安全集合变为线程安全集合 ...

  6. java多线程快速入门(十八)

    Lock锁是JDK1.5之后推出的并发包里面的关键字(注意捕获异常,释放锁) Lock与synchronized的区别 Lock锁可以人为的释放锁(相当于汽车中的手动挡) synchronized当线 ...

  7. java多线程快速入门(十五)

    使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) package com.cppdy; class MyThread11 extends Thread { / ...

  8. java多线程快速入门(十九)

    如何停止线程 1.使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了) package com.cppdy; class MyThread15 extends T ...

  9. java多线程快速入门(十六)

    ThreadLocal关键字实现每个线程有自己的变量 package com.cppdy; class Number { private int num; public static ThreadLo ...

随机推荐

  1. 关于checkbox全选与全不选的实现与遇到的问题

    HTML: <div class="outbox"> <label for="box">全选</label> <inp ...

  2. vue2.0 之标签属性

    标签属性v-bind <template> <div> <ul> <li v-for="item in list"> {{ item ...

  3. JAVA-大白话探索JVM-类加载过程(二)

    首先我们知道JVM是什么以及类加载器的作用 不清楚的可以看看JAVA-大白话探索JVM-类加载器(一) 现在我们来摸索下类的加载过程 首先,我们将类加载过程分为三步走 装载 链接 初始化 其中 链接 ...

  4. C#中子线程操作主线程中窗体上控件的方法

    Demo this.listView1.Visible = true; this.listView1.BeginUpdate();this.listView1.EndUpdate(); //结束数据处 ...

  5. 宕机不等于关机,阴魂不散的vm

    今天早上刚到公司,就发现研发环境的机器连不上了. 公司研发环境的部署比较简单,物理机上装VMware Esxi 6 ,然后在esxi上装虚机. 检查发现:esxi ping不通,客户端也连不上:物理机 ...

  6. Mac下使用Wine安装PowerDesigner15

    下载: (链接: https://pan.baidu.com/s/1bpEYyIV 密码: 5ymj) 安装: 1.安装Wine 参考:http://www.cnblogs.com/EasonJim/ ...

  7. 【BZOJ2749】【HAOI2012】外星人[欧拉函数]

    外星人 Time Limit: 3 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Input   Output 输出te ...

  8. 表格控件QTableWidget

    搭配QTableWidgetItem使用 样式: import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplica ...

  9. OOM之类、对象、实例、实体之辨析

    一.场景再现         有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别.我用禅语来解释一下吧:         鱼和三文鱼有什么区别?         ...

  10. json转对象-对象转json

    我们经常会用到json,所以在c#里就会经常有对象or对象数组转json,json转对象or对象数组. ps:对象或者json可能是{}or[],也就是json属性or json数组形式,或者json ...