回顾前面的线程安全问题(看看源码)

  StringBuffer/StringBuilder

  Vector

  Hashtable

  以及Collections中的让集合同步的方法

示例代码如下:

 1 package cn.itcast_12;
 2
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.Hashtable;
 6 import java.util.List;
 7 import java.util.Vector;
 8
 9 public class ThreadDemo {
10     public static void main(String[] args) {
11         // 线程安全的类
12         StringBuffer sb = new StringBuffer(); // 几乎所有的方法都加了synchronized,所以线程安全,但效率低。
13         Vector<String> v = new Vector<String>(); // 几乎所有的方法都加了synchronized,所以线程安全,但效率低。
14         Hashtable<String, String> h = new Hashtable<String, String>(); // 几乎所有的方法都加了synchronized,所以线程安全,但效率低。
15
16         // Vector是线程安全的时候才会去考虑使用的,但是呢,即使要安全,也不用Vector。
17         // 为什么呢?那么到底用谁呢?
18         // Collections工具类的让集合同步的方法,以List举例:
19         // public static <T> List<T> synchronizedList(List<T> list)
20         List<String> list1 = new ArrayList<String>(); // 线程不安全的List
21         List<String> list2 = Collections.synchronizedList(new ArrayList<String>()); // 线程安全的List
22         // 通过Collections类的让集合同步的方法,就把线程不安全的List变成线程安全的List了,所以我们不用Vector!
23     }
24 }

我的GitHub地址:https://github.com/heizemingjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】

回顾以前的线程安全的类相关推荐

  1. android自定义线程池工具类,妈妈再也不用担心你不会使用线程池了(ThreadUtils)...

    为什么要用线程池 使用线程池管理线程有如下优点:降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行. 提高线程的可 ...

  2. Java并发编程(十)设计线程安全的类

    待续... 线程安全的类 之前学了很多线程安全的知识,现在导致了我每次用一个类或者做一个操作我就会去想是不是线程安全的.如果每次都这样的考虑的话就很蛋疼了,这里的思路是,将现有的线程安全组件组合为更大 ...

  3. 线程间定制化调用通信—— 1 高内聚低耦合的前提下,线程操作资源类 2 判断/干活/通知 3 多线程交互中,必须要防止多线程的虚假唤醒,也即(判断只用while,不能用if)

    生产者与消费者模式 一个生产者与一个消费者 题目:现在有两个线程,可以操作初始值为0的一个变量,实现一个线程对该变量加1,另一个线程对该变量减1,这两个线程的操作加一.减一交替,进行10轮,变量的初始 ...

  4. android 如何在线程缓存实体类

    今天,简单讲讲在线程里把数据缓存起来. 如果在线程里有一些类变量,在run的代码里循环给这些变量赋值,然后缓存在一个list链表里,最后变量链表会发现数据有的不对. 原因很简单,对于基本数据类型,可以 ...

  5. [Java 并发编程实战] 设计线程安全的类的三个方式(含代码)

    发奋忘食,乐以忘优,不知老之将至.---<论语> 前面几篇已经介绍了关于线程安全和同步的相关知识,那么有了这些概念,我们就可以开始着手设计线程安全的类.本文将介绍构建线程安全类的几个方法, ...

  6. Java 中的线程安全的类

    Java 中的线程安全的类 3 个线程安全的类 它们对应的非线程安全的类 它们延伸的类 其它 它们对应的非线程安全的类 3 个线程安全的类   Java 中的 3 个基本的线程安全的类为:Hashta ...

  7. Android开发线程池管理类之ThreadPoolExecutor工具类

    平常开发中网络请求自从Android4.0后强制要求放到子线程中避免主线程进行网络请求,一般很多人习惯直接通过new Thread的方法.不建议这样使用.我们用ThreadPoolExecutor线程 ...

  8. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类...

    俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力. 本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程相关类,本篇 ...

  9. hashmap为什么线程不安全_什么时候线程不安全?怎样做到线程安全?怎么扩展线程安全的类?...

    本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料 顺便再给大家推荐一套Spring ...

最新文章

  1. AI研究员收集NLP数据的四种创意方法(大牛分享)
  2. winpython使用教程-winpython是什么
  3. 【Python学习系列十二】Python库pandas之CSV导入
  4. ML之FE:数据处理—特征工程之特征选择常用方法之基于搜索策略的三种分类、基于评价准则划分的三种分类(Filter/Wrapper/Embedded)及其代码实现
  5. 点击模型:达观数据提升算法精度的利器
  6. 在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法
  7. POJ3080 ZOJ2784 UVALive3628 Blue Jeans题解
  8. MySQL数据库的一些基本语法
  9. php项目重构,跪求网页重构、前端开发、PHP 开发,坐标深圳腾讯 CDC
  10. docker(4):coreos+docker+rancher真厉害
  11. Qt 自定义QWidget中区分鼠标单击和双击
  12. Android 中Goolgle 相关服务的移植[转]
  13. 计算机家庭网络共享,教大家家庭局域网如何共享
  14. 38、生鲜电商平台-会员积分系统的设计与架构
  15. Zotero+Web of Science 实现批量导入下载文献
  16. WIN10系统-Deepin系统重装
  17. 关于学习的一些网站(自用)
  18. c语言怎么算除法算式,随机算式的除法如果答案是无限循环小数,怎么加精度?...
  19. (JLK105D)中山爆款LED恒流电源芯片方案
  20. 程序狗,未知的艰难讨薪路

热门文章

  1. 58回应“简历数据泄露”:将展开追查并加固安全系统
  2. MVC 视图与控制器传值的几种方法
  3. SharePoint Error - An unrecognized HTTP response was received when attempting to crawl this item
  4. wince注册表结构
  5. Linux下的截图工具 KSnapshot
  6. c语言一输入运算就显示错误,大咖都会犯的18个c语言入门错误
  7. Kali Linux快速切换root用户
  8. 如何计算一年总共有多少周_美国计算机CS专业一年需要多少留学费用?
  9. 计算机网络双语名词,计算机网络中英文名词对照
  10. 交换机模拟配置软件_网络设备模拟器Packet Tracer实验