这是我最近问过的受访者的一些问题,这些受访者说他们知道Java并发性:
- 解释“内存可见性”的危害-JVM可以对不受监视器保护且未声明的变量重新排序某些操作的方式
volatile,以使一个线程可能看不到另一个线程所做的更改。通常,我通过显示存在此危害的代码来问这个问题(例如NoVisibility,Goetz等人的“ Java Concurrency in Practice”中的清单3.1中的示例),并询问出了什么问题。 - 说明不仅
volatile影响声明的实际变量volatile,而且还影响线程在更改volatile变量之前对变量所做的任何更改。 - 为什么用
volatile代替synchronized? - 使用
wait()和实现条件变量notifyAll()。说明为什么要使用notifyAll()。说明为什么要使用while循环测试条件变量。
我的问题是-这些是适当的还是太高级了,无法问一个知道Java并发的人?
而当我们讨论它时,您是否认为应该期望从事Java并发工作的人员对Java垃圾回收的了解高于平均水平?
notifyAll()“我不相信要进行OS调度程序的工作,那么我会使用notify()”