常规锁如何保护Java中的并行访问?

斯特凡

我们都从Java并发中学到的第一件事就是我们使用synchronized keyword, Lock/ReadWriteLock interface)防止并发访问。例如:

synchronized void eat(){
        //some code
    }

从理论上讲,该方法eat()可以由单个线程执行。即使有许多线程在等待执行它,也只有一个执行该但是随之而来的是并行性,这使我对我刚才说的事情三思而行。

我有4核CPU。这意味着我可以并行执行4个任务是的,锁可以由单个线程获取。但它可能发生的4个线程调用方法eat(),并采取锁定在字面上同时,虽然有需要被收购实际上做什么?

Java中是否可以发生类似的事情?我猜不能,但是我不得不问这个。我刚才说的一个案件怎么办?

所罗门慢

... 4个线程...同时锁住...

不会发生 任何“同步”操作(例如“带锁”)都必须在系统的主内存上进行操作,并且在任何常规计算机系统中,只有一条内存总线。一个以上的CPU实际上不可能同时访问主内存。

如果两个CPU实际上决定同时访问内存,则硬件将保证其中一个将“赢得比赛”并先行,而另一个则被迫等待。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Python中的锁保护对象?

来自分类Dev

“锁”在保护关键部分的程序中如何工作?

来自分类Dev

如何从子类访问java中超类的受保护字段?

来自分类Dev

我可以访问Java中同步块使用的锁吗?

来自分类Dev

当多个JVM访问同一数据库时,如何在Java中获得行级锁?

来自分类Dev

Java无法访问内部类中的受保护变量

来自分类Dev

如何使“孙子”类中的受保护成员无法访问

来自分类Dev

如何保护Azure存储/服务总线中的访问密钥

来自分类Dev

如何保护用户,请访问magento中的产品页面

来自分类Dev

Java如何实现锁

来自分类Dev

如何为Windows 8的锁屏设置屏幕保护程序?

来自分类Dev

如何使同步互斥锁与每个进程的访问?

来自分类Dev

如何使用锁使对象不可访问

来自分类Dev

如何从常规Javascript函数访问angularjs常量

来自分类Dev

如何使用常规渲染访问Redux道具

来自分类Dev

使用锁访问C#中的方法

来自分类Dev

使用Java中父类静态变量上的子类的线程访问锁

来自分类Dev

Java中的并发字节数组访问,锁越少越好

来自分类Dev

Java中是否有一个常规的迭代器接口,可将遍历与元素访问分开?

来自分类Dev

如何在自己的插件中访问常规的Eclipse首选项

来自分类Dev

如何在自己的插件中访问常规的Eclipse首选项

来自分类Dev

了解Java中的嵌套锁

来自分类Dev

Java中的锁和并发

来自分类Dev

什么是Java中的“常规文件”?

来自分类Dev

如何从Java中的并行数组中删除重复项?

来自分类Dev

如何获得C ++中的锁?

来自分类Dev

Redis 中的锁是如何工作的?

来自分类Dev

Java中的并行流

来自分类Dev

如何在 Java 中并行化二维数组?

Related 相关文章

热门标签

归档