Java专题十三(2):线程安全与同步 [TOC] 多个线程访问共享资源和可变资源时,由于线程执行的随机性,可能导致程序出现错误的结果 假设我们要实现一个视频网站在线人数统计功能,在每个客户端登录网站时,统计在线人数,通常用一个变量count代表人数,用户上线后,count++ 假设目前在线人数co ...
分类:
编程语言 时间:
2020-04-25 23:27:00
阅读次数:
71
在 CopyOnWriteArrayList 出现之前,我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现,而且也有了线程安全的 Vector 和 Collections.synchronizedList() 可以使用。所以首先就让我们来看下线程安全的 V ...
分类:
其他好文 时间:
2020-04-25 19:30:12
阅读次数:
50
单例模式,顾名思义只能存在一个实例。类中包含访问对象唯一的方法,不需要外界去实例化,可以直接访问。单例模式的核心点--构造方法私有化。 单例模式的分类: 1.饿汉式: 饿汉式,从名字上也很好理解,就是“比较饿”,实例在初始化的时候就已经建好了,不管你有没有用到,都先建好了再说。好处是没有线程安全的问 ...
分类:
编程语言 时间:
2020-04-25 17:03:30
阅读次数:
69
一、总述String是字符串常量,StringBuffer和StringBuilder是字符串变量;StringBuffer线程安全而StringBuilder是不安全的二、String与两者的区别String: 1 public final class String 2 implements ja... ...
分类:
其他好文 时间:
2020-04-25 16:47:41
阅读次数:
71
SynchronizedMap 一次锁住整张表来保证线程安全,所以每次只能有一个线程来 访为 map。 ConcurrentHashMap 使用分段锁来保证在多线程下的性能。 ConcurrentHashMap 中则是一次锁住一个桶。ConcurrentHashMap 默认将 hash 表分为 16 ...
分类:
其他好文 时间:
2020-04-25 01:24:28
阅读次数:
93
在两个线程间共享变量即可实现共享。 一般来说,共享变量要求变量本身是线程安全的,然后在线程内使用的时候,如 果有对共享变量的复合操作,那么也得保证复合操作的线程安全性。 ...
分类:
编程语言 时间:
2020-04-25 00:57:21
阅读次数:
223
饿汉模式 1 public class Single { 2 3 private static Single instance = new Single(); 4 5 private Single(){ 6 System.out.println("Single: " + System.nanoTim ...
分类:
编程语言 时间:
2020-04-24 00:45:43
阅读次数:
59
Dictionary非线程安全集合 代码测试会报错:集合已经改变 public class ConcurrentDictionaryTest { public void Run() { Dictionary<string, int> dic = new Dictionary<string, int> ...
分类:
其他好文 时间:
2020-04-22 20:19:43
阅读次数:
97
两者简介: HashMap简介: HashMap是基于哈希表实现的,每一个元素是一个key(数据类型必须一致)-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下 ...
分类:
其他好文 时间:
2020-04-22 10:13:13
阅读次数:
67
StringBuilder&StringBuffer Stringbuffer是一个线程安全的可变的字符序列,即StringBuffer是线程安全的,而StringBuilder是非线程安全的。继承关系图如下: CharSequence:是一个接口,CharSequence是char值的可读序列。 ...
分类:
其他好文 时间:
2020-04-22 10:03:10
阅读次数:
40