首页> 知识> 常识> 正文

java如何实现线程安全

2018.08.27 17:14 3389

线程安全就是要保证数据的高度一致性和准确性,但不是一定要加锁才是线程安全性,只要代码里没有变量互串,线程之间互不影响,就是线程安全的,那么java如何实现线程安全?下面我们一起来了解一下。

网络安全小知识:

(1)互斥同步:

互斥是因,同步是果,推荐使用synchronized关键字进行同步,在concurrent包中有ReentrantLock类,实现效果差不多.还是推荐原生态的synchronized.

(2)非阻塞同步:

需要硬件指令完成.常用的指令有:

Test-and-Set

Fetch-and-Increment

Swap

Compare-and-Swap (CAS)

Load-Linked/Store-Conditional (LL/SC)

典型的应用在AtomicInteger中

(3)无同步方案

可重入代码:在代码执行的任何时刻中断它,转而去执行另外一段代码,而在控制权返回后,原来的程序不会出现任何错误.

可重入代码有一些共同的特性:例如不以来存储在堆上的数据和公用的系统资源,用到的状态量都由参数中传入,不调用非可重入的方法等.

线程本地存储:如果一段代码中所需要的数据必须与其他代码共享,那就看看这些共享数据的代码是否能保证在统一线程中执行?如果能保证,可以把共享数据的可见范围限制在同一个线程中,这样,无需同步也能保证线程之间不出现数据争用问题.在java中可以通过使用java.lang.ThreadLocal开实现线程本地存储的功能.

这种应用在人人网的开源框架Rose有广泛的应用,最经典的应用在获取当前登录用户对象的时候,是通过t票 到cache中来拿到当前登录用户的user对象.对象就保存在ThreadLocal中.经典的web交互模型中"一个请求对应一个服务器线程"的处理方式,把user对象保存在线程本地存储中 可以很好的解决线程安全的问题。

佰佰安全网提醒您:实施网络安全防范措施与应用措施是必须要做的,这样才能保障在网络中的安全。最后大家想要了解更多网络安全常识和网络安全技术可在本网站了解。

( 责任编辑: 张小付 )

分享到

相关阅读

网络祭奠的优势之处在哪里?这些好处很明显

2022.11.23

1338

在哪里找网络兼职?可以尝试在这些地方寻找

2022.08.31

1926

靠谱的网络兼职有哪些?这些可以值得尝试

2022.08.31

1566

网络兼职有哪些好处?这几点优势要了解

2022.08.31

1655

网络兼职是什么意思?赶紧来了解下

2022.08.31

1743

加载更多

为您推荐

电脑宕机频繁出现,掌握使用技巧很重要

2022年06月30日 14:01

1384

不想工作时电脑死机,平时一定要懂这些知识

2021年12月29日 10:44

2120

指纹支付安全有效,你还进入了误区之中吗

2021年06月28日 10:21

2939

做微商代理需要注意什么?

2018年02月25日 13:37

6227

网络实名制有什么好处?

2018年01月17日 17:43

5890