Java中并发关键字有哪些-创新互联

这篇文章主要介绍了Java中并发关键字有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联专注于企业成都营销网站建设、网站重做改版、城中网站定制设计、自适应品牌网站建设、H5页面制作商城网站定制开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为城中等各大城市提供网站开发制作服务。

并发的特性
1、可见性
a、 保证任何一个线程修改变量立即写入到主内存中(堆);
b、 所有线程对该变量引用会强制立即失效,并且该线程必须去堆中获取最新的变量值。

2、指令重排序
代码的执行顺序 会在JVM中(编译器优化 指令级并行重排序 内存系统重排序 最终执行的指令序列)

3、原子性
同一时刻最多只有一个线程访问该段代码。

Volatile  -> 可见性、指令重排序

Synchronied -> 可见性、指令重排序、原子性

lock
存在价值
synchronized只在以下2种情况下会释放锁
1)获取锁的线程执行完了该代码块,然后线程释放对锁的占有;
2)线程执行发生异常,此时JVM会让线程自动释放锁。
因此synchronized可能会造成线程阻塞。
为解决线程阻塞问题,引入此概念。
public interface Lock {
void lock();//获取锁,如果锁被其他线程获取,则进行等待
void lockInterruptibly() throws InterruptedException;
  // tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回 false,也就说这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。
      boolean tryLock();
 //tryLock(long time, TimeUnit unit)方法和tryLock()方法是类似的,只不过区别在于这个方法在拿不    到锁时会等待一定的时间,在时间期限之内如果还拿不到锁,就返回false。如果如果一开始拿到锁或者在等待期间内拿到了锁,则返回true。
    boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
    void unlock(); //释放锁
    Condition newCondition();
}

Final
final修饰的变量不可改变,在并发编程场景下性能突出。

volatile和synchronied区别
1、volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞。(原子性差异造成)
2、volatile只能修饰变量,而synchronized则可以修饰变量和方法。
3、当一个域的值依赖于它之前的值时,volatile就无法工作了,如n=n+1,n++等。如果某个域的值受到其他域的值的限制,那么volatile也无法工作,如Range类的lower和upper边界,必须遵循lower<=upper的限制。
4、使用volatile而不是synchronized的唯一安全的情况是类中只有一个可变的域。

synchronized和lock区别
1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;
2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;
3)Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;
4)通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
5)Lock可以提高多个线程进行读操作的效率。
在性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈时(即有大量线程同时竞争),此时Lock的性能要远远优于synchronized。所以说,在具体使用时要根据适当情况选择。

感谢你能够认真阅读完这篇文章,希望小编分享的“Java中并发关键字有哪些”这篇文章对大家有帮助,同时也希望大家多多支持创新互联建站,关注创新互联网站制作公司行业资讯频道,更多相关知识等着你来学习!

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。

文章名称:Java中并发关键字有哪些-创新互联
本文网址:https://www.cdcxhl.com/article48/dodsep.html

成都网站建设公司_创新互联,为您提供小程序开发响应式网站用户体验关键词优化品牌网站设计定制开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化