1、Java.util的线程安全工具类

  Vector(线程安全)    ArrayList(线程不安全)

  HashTable(线程安全)  HashMap(线程不安全)

2、将线程不安全集合变为线程安全集合

package com.cppdy;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map; public class ThreadDemo16 { public static void main(String[] args) throws Exception {
Map<String, String> map=new HashMap<>();
map.put("name", "吹泡泡的魚");
//将线程不安全集合变为线程安全集合
Map<String, String> synchronizedMap = Collections.synchronizedMap(map);
} }

3、ConcurrentHashMap(分段存储,分段锁,只要多个修改操作发生在不同的段上,它们就可以并发进行,最高支持16个线程的并发修改操作)

package com.cppdy;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; public class ThreadDemo16 { public static void main(String[] args) throws Exception {
//分段存储,分段锁,只要多个修改操作发生在不同的段上,它们就可以并发进行,最高支持16个线程的并发修改操作
ConcurrentMap<String, String> concurrentMap=new ConcurrentHashMap<String, String>();
} }

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

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

    在静态方法上面加synchonizd用的是字节码文件锁 package com.cppdy; class MyThread8 implements Runnable { private static ...

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

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

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

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

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

    使用atomicInteger解决了原子性问题(AtomicInteger保证每次只能一个线程操作count) package com.cppdy; import java.util.concurre ...

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

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

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

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

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

    synchonizd解决安全性问题 package com.cppdy; class MyThread6 implements Runnable{ private Integer ticketCoun ...

  8. Java Web快速入门——全十讲

    Java Web快速入门——全十讲 这是一次培训的讲义,就是我在给学生讲的过程中记录下来的,非常完整,原来发表在Blog上,我感觉这里的学生可能更需要. 内容比较长,你可以先收藏起来,慢慢看. 第一讲 ...

  9. java 多线程 快速入门

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

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

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

随机推荐

  1. ubuntu安装GBK编码

    1 添加GBK编码 sudo vim /var/lib/locales/supported.d/local en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 zh_CN.GBK ...

  2. Spark思维导图之Spark Core

  3. java调试与排错

    参考网址:http://www.doc88.com/p-461115156632.html 一.Java程序调试与错误收集 1.Web程序的调试与排错:尽量使用System.out.println() ...

  4. 在github上创建自己的项目

    使用过很多次github 但一直是把别人的项目clone下来,并没有自己创建过项目.所以记录一下~ 首先,创建一个仓库 填写工程名之后就创建好啦 然后clone代码到本地 就和正常的使用完全一样啦 ~ ...

  5. Log4Net配置日志

    1.log4net 1)新建一个Net空白项目,在引用出点击管理NuGet程序包,搜索log4net并安装 2)建立log4net.config配置文件 在configuration里面添加如下代码, ...

  6. Kotlin中与Java不同的地方 需要注意

    1. 在Kotlin中不会将基本数据类型的自动转型比如 scriptIntrinsicBlur.setRadius(25) //报错, 必须写成 25f 或者 调用.toFloat() 2.Kotli ...

  7. windows10+ubuntu16.04双系统搭建

    0 - 环境 操作系统: Windows 10 + Ubuntu 16.04 显卡: GTX 950M Cuda 9.0 cudnn v7.0 tensorflow-gpu==1.7.0 1 - ub ...

  8. vue 学习笔记—路由篇

    一.关于三种路由 动态路由 就是path:good/:ops    这种 用 $route.params接收 <router-link>是用来跳转  <router-view> ...

  9. 解决Ubuntu 18.04中文输入法的问题,安装搜狗拼音

    首先安装fcitx一.检测是否安装fcitx首先检测是否有fcitx,因为搜狗拼音依赖fcitx> fcitx提示:程序“fcitx”尚未安装. 您可以使用以下命令安装:> sudo ap ...

  10. TextView 文字拼接

    //引用文字 String testStr = (getResources().getString(R.string.test_str,"<font color='#ff0000'&g ...