这是一个求职面试的问题:
如何识别同步块中的读线程和写线程?
您总是可以执行以下操作:
Thread current = Thread.currentThread()
现在; 当您拥有线程的地图/列表/...时,您可以简单地比较参考。简单的例子:
您将两个字段添加到您的类:
private Thread reader =
private Thread writer =
然后你可以做
synchronized foo() {
if (Thread.currentThread() == reader) ...
并且记录在案:虽然事情看起来那么容易,但处理“这个问题”的人应该退后一步:这到处都是XY 问题 。
含义:在“真实”世界中;我认为这样的代码是不好的做法。最有可能的是,它试图解决应该以其他方式解决的问题!
因此,面试官的答案最好是直接的技术答案的组合;但指出“不良做法”问题。
您可以检查当前线程是 instanceOf Reader 还是 Writer