三、共享受限资源 对于并发任务,你需要某种方式来防止两个任务访问相同的资源,至少在关键阶段不能出现这种情况。 1.解决共享资源竞争 防止这种冲突的方法就是当资源被一个任务使用时,在其上加锁。基本上所有的并发模式在解决线程冲突问题的时候,都是采用序列化访问共享资源的方案。通常这是通过在代码前面加上以挑 ...
分类:
编程语言 时间:
2019-11-01 09:31:42
阅读次数:
109
ThreadLocal说明 类ThreadLocal主要为了解决每个线程绑定自己的私有的值,可以吧ThreadLocal比如可全部存放的数据,每个线程都可以在里面存放自己的数据,并且不会和其他线程冲突。 测试代码 观察下面的代码可以验证上面的结论,Main线程保存的是123,那么在子线程A保存"AB ...
分类:
其他好文 时间:
2019-02-17 23:38:55
阅读次数:
186
TLAB全称是Thread Local Allocation Buffer 即线程本地分配缓存,从名字上看是一个线程专用的内存分配区域,是为了加速对象分配而生的。 每一个线程都会产生一个TLAB,该线程独享的工作区域,java虚拟机使用这种TLAB区来避免多线程冲突问题,提高了 对象分配的效率。TL ...
分类:
其他好文 时间:
2019-01-20 15:10:12
阅读次数:
457
1. 使用 synchronized (互斥)解决代码冲突问题 注意: 该代码并未完全解决问题。 ...
分类:
编程语言 时间:
2018-11-19 13:36:22
阅读次数:
256
之前面试被问到C++里static的作用是什么,但我却只知道static在java里的作用是什么,于是就google了一下c++相关面试题,发现这个同学总结的很棒。 就记录一下。 原文地址:C/C++面试知识总结 侵删 正文分割线 const 作用 Volatile volatile 关键字是一种类 ...
分类:
编程语言 时间:
2018-06-15 15:56:06
阅读次数:
211
本文基于jdk1.8.0_66写成 0. ThreadLocal简介 ThreadLocal可以提供线程内的局部对象,合理的使用可以避免线程冲突的问题比方说SimpleDateFormat是线程不安全的,但是如果用ThreadLocal给每个线程分配一个SimpleDateFormat对象,我们就可 ...
分类:
其他好文 时间:
2018-03-01 13:30:01
阅读次数:
109
昨天,在做一个NPOI读取的小demo的时候,使用OpenFileDialog打开文件,最开始的写法,直接在按钮点击事件中写,会报错,代码如下: 或者直接 这两种,无论哪种写法,在代码执行的时候,会报错,具体报错为: 这种情况,在网上查询,是说线程问题,就是线程冲突了,不知道该执行哪一个,具体说法如 ...
分类:
编程语言 时间:
2018-01-19 11:31:41
阅读次数:
186
无锁是一种乐观策略,使用CAS(compare and swap)来鉴别线程冲突,如果发生冲突,就重试当前操作直到没有冲突为止。 CAS(V,E,N) V要更新的变量,E表示预期值,N表示心值 仅当V=E时,才会将V设置为N 如果V!=E 说明已经有其他线程做了更新 当前线程什么也不做 CAS操作即 ...
分类:
编程语言 时间:
2017-06-14 13:06:47
阅读次数:
251
SUN公司早在JDK1.2的时候就为我们提供了java.lang.ThreadLocal,低版本的JDK所提供的get()返回的是Object对象,需要强制类型转换,使用起来不方便,而在JDK1.5引入了泛型,在一定程度地简化ThreadLocal的使用。 我们知道在spring容器中获取实例的时候 ...
分类:
其他好文 时间:
2017-06-03 19:19:05
阅读次数:
195
前面说到了数据库的隔离级别,隔离性是数据库中数据有意义的条件之一,而不同的隔离级别,归根到底其实是在读和写的操作中对表、事务后者是表进行对应的锁定操作,所以下面简单总结下数据库的两种类型锁:乐观和悲观锁,很多是概念性的东西和个人理解,不足之处也请指正。 一、锁的概念 简单说说数据库锁的概念,和多线程 ...
分类:
数据库 时间:
2017-04-16 11:16:37
阅读次数:
157