java多线程快速入门(十四)
使用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多线程快速入门(十四)的更多相关文章
- java多线程快速入门(四)
		
通过匿名内部类的方法创建多线程 package com.cppdy; //通过匿名内部类的方法创建多线程 public class ThreadDemo2 { public static void m ...
 - “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程
		
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
 - java 多线程 快速入门
		
------------恢复内容开始------------ java 多线程 快速入门 1. 进程和线程 什么是进程? 进程是正在运行的程序它是线程的集合 进程中一定有一个主线程 一个操作系统可以有 ...
 - java多线程快速入门(二十二)
		
线程池的好处: 避免我们过多的去new线程,new是占资源的(GC主要堆内存) 提高效率 避免浪费资源 提高响应速度 作用:会把之前执行某个线程完毕的线程不会释放掉会留到线程池中给下一个调用的线程直接 ...
 - java多线程快速入门(二十)
		
1.Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2.将线程不安全集合变为线程安全集合 ...
 - java多线程快速入门(十八)
		
Lock锁是JDK1.5之后推出的并发包里面的关键字(注意捕获异常,释放锁) Lock与synchronized的区别 Lock锁可以人为的释放锁(相当于汽车中的手动挡) synchronized当线 ...
 - java多线程快速入门(十五)
		
使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) package com.cppdy; class MyThread11 extends Thread { / ...
 - java多线程快速入门(十九)
		
如何停止线程 1.使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了) package com.cppdy; class MyThread15 extends T ...
 - java多线程快速入门(十六)
		
ThreadLocal关键字实现每个线程有自己的变量 package com.cppdy; class Number { private int num; public static ThreadLo ...
 
随机推荐
- sudo 找不到命令 go
			
错误描述 环境 CentOS7.1 x64 golang 1.9.3 golang目录:/home/moonlightwatch/go/ 环境变量配置: # /etc/profile export G ...
 - bzoj千题计划297:bzoj3629: [JLOI2014]聪明的燕姿
			
http://www.lydsy.com/JudgeOnline/problem.php?id=3629 约数和定理: 若n的标准分解式为 p1^k1 * p2^k2 …… 那么n的约数和= π (Σ ...
 - 通用Excel文件导出工具类
			
1:Excel格式 2:ExcelUtil.java import java.io.ByteArrayOutputStream; import java.io.IOException; import ...
 - TCP网络编程
			
TCP网络编程 与UDP不同的是TCP是通过客服端和服务端的方式来传输数据的.客服端:public class TCPClient { /** * @param args * @th ...
 - 如何成为软件测试职场“头号玩家”,月入10k+
			
最近看了一部电影,叫<头号玩家>,电影挺不错的,延伸到自己的测试职业生涯,其实在我们的测试职场,也是存在头号玩家的,但并不是真的在玩,而是在努力工作. 不管是什么游戏,如果要玩通关升级,那 ...
 - activity 解析
			
acitvity的四种状态: running.paused.stopped.killed 生命周期: onCreate()用来加载资源布局 onStart()启动activity,用户已经可以看到界面 ...
 - Java获取资源路径——(八)
			
获取文件资源有两种方式: 第一种是: 获取Java项目根目录开始制定文件夹下指定文件,不用类加载器(目录开始要加/) // 获取工程路径 System.out.println(System.getP ...
 - linux笔记_day03
			
1.命令行展开{} mkdir -p a/b/{c,d/e} 2.-v verbose 详细的 3.touch touch - change file timestamps 4.stat 文件 显示 ...
 - DBSCAN密度聚类
			
1. 密度聚类概念 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密 ...
 - /etc/fstab文件详解【转】
			
******************************************************************************* 有很多人经常修改/etc/fstab文件 ...