2017-04-07 55 views

回答

2

你总是可以这样做:

Thread current = Thread.currentThread() 

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

您添加两个字段类:

private Thread reader = 
private Thread writer = 

然后你可以做

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

并记录在案:虽然事情看起来那么容易,一个人对付“这个问题”而应退一步:此气味XY problem 所有的地方。

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

所以,回答面试官会更好的是直接的技术答案的组合;但指出“不好的做法”问题。

0

您可以检查当前线程}这种读取器或写入

+0

'Thread.currentThread()'将始终返回的东西是'的instanceof Thread'。但是'延伸Thread'通常是一个代码味道,所以单看目前的Thread对象的_type_不会告诉你任何东西,如果你的代码不臭。就像GhostCat所说的,最好使用对象的_identity_。最重要的是,不要编写代码来完成不同的事情,这取决于谁来调用它。 –