java - 在同步块中,Java多线程读取器和编写线程

  显示原文与译文双语对照的内容

这是工作面试中的一个问题:

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

时间: 原作者:

你可以始终执行以下操作:


Thread current = Thread.currentThread()



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

将两个字段添加到类中:


private Thread reader = 


private Thread writer = 



然后你就可以


synchronized foo() {


 if (Thread.currentThread() == reader).. .



对于记录:尽管事情看起来很简单,但是处理"这个问题"的人应该往后退: 这个气味 XY问题到处都是。

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

所以,对面试员的答案最好是直接技术答案的结合,但是指出"坏习惯"的问题。

原作者:
...