2013-01-07 19 views
0

Java中有很多API支持像Socket,Lock和其他類型的blockingcall(timeout)。這些東西在Java中如何實現?如何在Java類中實現超時阻止調用,例如套接字

我試圖找出,但它導致本地代碼是不可見:(

是像創建一個線程,中斷它超時的母語水平在Java中使用類似的方法?如果是的話同樣能已經在Java級別做,爲什麼要用本土?

+0

*「如果是這樣,那麼在Java級別上可以完成相同的操作」*可能效率不高。 – assylias

+0

你有一段時間想訴諸本地代碼,Java不能做任何事情。它只對所有JVM必須遵守的所有「低級」類都有一個標準化的行爲,盡最大可能。例如,線程創建不能由JVM本身完成,它必須向OS詢問。 – fge

+0

我的意思是有沒有什麼方法可以讓操作系統和我們慣用的通常做法有所不同? –

回答

1

it lead to native code which is not visible這通常意味着它不是用Java實現,通常它是由操作系統來實現。你可以GETT他來源爲Linux,但不能在Windows AFAIK。

使用Java線程中斷,並不會實際中斷線程,它只是設置一個標誌不會喚醒所有阻止操作。這種機制不被使用,因爲它並不總是你想要的。