码迷,mamicode.com
首页 > 其他好文 > 详细

123

时间:2020-01-13 19:51:51      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:进程   产生   方法   原子性   其他   区别   分配   告诉   问题   

volatile和synchronized的区别

  • volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
  • volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的
  • volatile仅能实现变量的修改可见性,不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性
  • volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
  • volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化

死锁问题:

死锁产生的4个必要条件

   1. 互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。
   2. 请求和保持:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。
   3. 不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。
   4. 循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。

死锁的定义:

死锁是指两个或者两个以上的进程在执行过程之中,因争夺资源而造成的一种互相等待的现象,若无外力的干扰下他们都将无法进行下去。

123

标签:进程   产生   方法   原子性   其他   区别   分配   告诉   问题   

原文地址:https://www.cnblogs.com/dcz98/p/12188787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!