并发:解决安全的“ 读 改 写 “

1.java对并发问题的应对: 1.为了使多线程程序的行为可预见,访问共享变量必须经过合理的协调,这样线程才不会 相互干扰.所以java提供了同步机制来协调这样的访问 2.线程运行时仍然会带来一定程度上的开销:上下文切换(Context Switches),当调度程序 临时挂起当前运行的线程时,另一个程序开始运行---这在多线程组成的应用程序中是很频 繁的,并且带来巨大的性能开销:保存和恢复线程执行的上下文,离开执行现场,并且CPU的 时间会花费在对线程的调...
摘要由CSDN通过智能技术生成

                                                                                       参考书籍 <<java并发编程实战>> 

1.java对并发问题的应对:

   

    1.为了使多线程程序的行为可预见,访问共享变量必须经过合理的协调,这样线程才不会
    相互干扰.所以java提供了同步机制来协调这样的访问
    2.线程运行时仍然会带来一定程度上的开销:上下文切换(Context Switches),当调度程序
    临时挂起当前运行的线程时,另一个程序开始运行---这在多线程组成的应用程序中是很频
    繁的,并且带来巨大的性能开销:保存和恢复线程执行的上下文,离开执行现场,并且CPU的
    时间会花费在对线程的调度,而不是在运行上.当线程共享数据时,它们必须适用同步机制,
    这个机制会限制编译器的优化,能够清空或锁定内存和高速缓存,并在共享内存的总线上创
    建同步通信,这就引入了新的性能开销.

2.线程安全的实质

   

     线程实质是在不可控的并发访问中保护数据,这些数据代表了对象的状态.一个对象应该是线程
    安全的取决于它是否被多个线程访问.线程安全这个性质,取决于程序如何使用对象,而不是对象
    完成了什么.保证对象的线程安全性需使用同步来协调对其可变状态的访问.无论何时,只要有
    多于一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,此时必须使用同步来协
    调线程对该变量的访问.java中的同步机制是sunchronized关键字,它是独占锁.除此之外,术语
    "同步"还包括volatile变量,显式锁和原子变量的使用

3.多线程访问同一个变量时如何保证线程安全

   

    a.不要跨线程共享变量
    b.使状态变量为不可变
    c.在任何访问状态变量的时候使用同步
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值