Java 多线程 - reader 和同步块中的编写器线程

Java multithreading - reader and writer thread in synchronized block

这是求职面试的问题:

如何在同步块中识别读线程和写线程?

您可以随时执行以下操作:

Thread current = Thread.currentThread()

现在;当您有 map/list/... 线程时,您可以简单地比较引用。简单示例:

您向 class 添加了两个字段:

private Thread reader = 
private Thread writer = 

然后你可以做

synchronized foo() {
  if (Thread.currentThread() == reader) ...

郑重声明:虽然事情看起来很简单,但与 "this problem" 打交道的人应该退后一步:这闻起来 XY problem 到处都是。

意思:在"real"世界;我认为这样的代码是不好的做法。很可能,它试图解决一个应该以其他方式解决的问题!

所以,面试官的回答最好是直接技术回答的组合;但指出 "bad practice" 问题。

您可以检查当前线程是 instanceOf Reader 还是 Writer