0

这是一个求职面试的问题:

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

4

2 回答 2

2

您总是可以执行以下操作:

Thread current = Thread.currentThread()

现在; 当您拥有线程的地图/列表/...时,您可以简单地比较参考。简单的例子:

您将两个字段添加到您的类:

private Thread reader = 
private Thread writer = 

然后你可以做

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

并且记录在案:虽然事情看起来那么容易,但处理“这个问题”的人应该退后一步:这到处都是XY 问题

含义:在“真实”世界中;我认为这样的代码是不好的做法。最有可能的是,它试图解决应该以其他方式解决的问题!

因此,面试官的答案最好是直接的技术答案的组合;但指出“不良做法”问题。

于 2017-04-07T11:38:16.173 回答
0

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

于 2017-04-07T11:47:41.043 回答