`

关于线程安全

阅读更多
在线程中使用共享资源时,能够保证共享资源在任何时候都是原子的、一致的,这样的线程就是线程安全的线程。
    共享资源是多线程中每个线程都要访问的类变量或实例变量,共享资源可以是单个类变量或实例变量,也可以是一组类变量或实例变量。多线程程序可以有多个共享资源。下面描述他们之间的一对多关系(*表示多):
          多线程程序(1)----共享资源(*)----类变量或实例变量(1…*)
    只有类变量和实例变量可以成为共享资源。
    所谓原子性,是指一个共享资源的所有属性在任何时刻都是一起变化、密不可分的。
    所谓一致性,是指一个共享资源的所有属性在变化之后一定会达到一个一致的状态。
    特别注意:局部变量、作为参数传递的非类变量、非实例变量不是共享资源。所以他们是线程安全的。
    对使用共享资源的方法要做到线程安全,就需要使用同步:synchronized关键字,synchronized关键字表示加锁,并发访问时只允许一个线程访问,通过线程的等待达到多线程同步的目的,synchronized关键可以对一个方法使用,也可以对一语句块使用synchronized(this){/*...*/}。
    ThreadLocal对于线程安全还是很有用的,如果资源不是共享的,那么应该使用ThreadLocal,但如果确实需要在线程间共享资源,ThreadLocal就没有用了!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics