ThreadLocal 是 Java 里一种特殊的变量。每个线程都有一个 ThreadLocal 就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。它是为创建代价高昂的对象获取线程安全的好方法,比如你可以用 ThreadLocal 让SimpleDateFormat 变成线程安全的,因为 ...
分类:
其他好文 时间:
2020-06-08 00:54:23
阅读次数:
84
在 Java 中可以有很多方法来保证线程安全——同步,使用原子类(atomic concurrent classes),实现并发锁,使用 volatile 关键字,使用不变类和线程安 全类。 ...
分类:
编程语言 时间:
2020-06-07 16:26:53
阅读次数:
61
1.python Queue https://www.cnblogs.com/itogo/p/5635629.html Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递. 基本先进先出队列 ...
分类:
编程语言 时间:
2020-06-07 10:55:53
阅读次数:
77
1、乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态, 乐观锁认为竞争不总是会发生,因此它不需要持有锁,将比较-替换这两个动作作 为一个原子操作尝试去修改内存中的变量,如果失败则表示发生冲突,那么就应 该有相应的重试逻辑。 2、悲观锁:还是像它的名字一样,对于并发间操作产生的线程 ...
分类:
其他好文 时间:
2020-06-05 21:20:40
阅读次数:
71
众所周知,JVM 创建一个对象分三步: 1.在堆内存开辟内存空间。 2.在堆内存中实例化Car里面的各个参数。 3.把对象指向堆内存空间。 为了提高运行效率,编译器在编译代码时可能会对指令进行重排序。重排序的原则是,保证单线程执行结果的正确性,并遵循 happen-before 原则。 指令间的依赖 ...
分类:
编程语言 时间:
2020-06-05 00:25:38
阅读次数:
72
golang 默认的map是线程不安全机制 sync.map 封装了锁的机制,实现了线程安全 其他人理解 https://www.cnblogs.com/zkqiang/p/12551611.html read 进行读取,dirty进行存储,其中数据类型实际都为 map[interface{}]*e ...
分类:
其他好文 时间:
2020-06-04 21:55:47
阅读次数:
75
多线程 多线程实现方式一 Thread Java虚拟机允许应用程序同时执行多个线程。 每个线程都有优先级,具有较高优先级的线程优先于优先级较低的线程执行。 当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为创建线程的优先级。 每个线程都有一个用于识别的名称,多个线程可能 ...
分类:
编程语言 时间:
2020-06-04 21:32:24
阅读次数:
72
流是指一连串流动的字符,是以先进先出方式发送信息的通道 字节流: 输出流:FileInputStream 输入流:FileOutputStream 字符流: 输入流:FileWriter 输出流:FileReader 缓冲流: 输入流:BufferedWriter 输出流:BufferedReade ...
分类:
其他好文 时间:
2020-06-04 21:30:50
阅读次数:
85
一、HashTable、HashMap有什么不同 1.1 HashTable HashTable是遗留类,很多映射的常用功能与HashMap类似,不同的是它继承自Dictionary类不支持null键和值,并且是线程安全的,任意时间只有一个线程能写HashTable,锁的粒度粗,并发性不如Concu ...
分类:
其他好文 时间:
2020-06-04 01:12:25
阅读次数:
62
恢复内容开始 一、线程中安全问题产生的原因。 1、多个线程在操作共享数据。 2、操作共享数据的线程代码有多条。 当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算,就会导致线程安全问题的产生。 解决: 将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候, 其他线程则不可 ...
分类:
编程语言 时间:
2020-06-03 23:35:48
阅读次数:
100