在我們的Java項目中的一個,我發現下面的代碼啓動一個線程:開始在Java線程和運算符優先級
new WorkerThread(socket).start();
現在根據operator precedence在Java中這是錯誤!它應該是代替:
(new WorkerThread(socket)).start();
現在我的問題:
爲什麼還工作嗎?有什麼危險嗎?
僅供參考,的WorkerThread實現非常簡單:
private class WorkerThread extends Thread
{
private Socket socket;
public WorkerThread(Socket socket)
{
super();
this.socket = socket;
}
@Override
public void run()
{
try
{
/* do stuff... */
}
catch (IOException e)
{
}
finally
{
socket.close();
}
}
}
爲什麼要根據運營商的優先級調用錯誤?你創建一個新的對象,然後你調用start方法... – GHajba
你從哪裏聽說這是錯誤的? – SomeJavaGuy
根據Java語法,它沒有什麼不對,它是完全有效的。 – cyroxis