Java高并发(一):什么是线程安全

  首先来介绍下两个基本的概念,进程和线程。

  进程:一个具有独立功能的程序关于某个数据集合的一次运行活动。说白了就是计算机中运行的程序就是进程,比如QQ、各种浏览器、各种播放器,每一种都是一个进程。

  线程:包含在进程之中,是进程中的实际运作单位。进程通过调用线程,完成不同的功能。

  一个对象是否是线程安全的,取决于它是否被多个线程同时访问。其实,与其说线程安全,倒不如说资源安全更为贴切。所以对线程安全给出一个确切的定义是非常复杂的,在网上可以搜到很多定义,比如:

  1、可以在多个线程中调用,并且在线程之间不会出现错误的交错;

  2、可以同时被多个线程调用,而调用者无需执行额外的动作;

这些定义并不能给我们带来太大的帮助,其实在线程安全性的定义中,最核心的概念就是正确性。如果不能清晰地定义正确性,那么对线程安全性的定义肯定会是模糊的。

  正确性的含义是,某个类的行为与其规范完全一致。也就是代码按照我们的定义,能够正确的处理对象以得到我们想要的结果(换句话说,就是指某个类在并发环境和单线程环境中都不会被破坏)。所以,线程安全性可以定义为:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。也就是当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。

其实,线程安全型,是围绕着"正确性"来理解的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值