我們可以同步一個類中的函數,或者我們可以在線程中鎖定它的對象,以在對象上創建線程安全。同步函數,或鎖定線程中的對象?
class DBresource {
synchronized public void dosomething() throws InterruptedException {
...
...
}
}
OR
class MyThread extends Thread {
public void run() {
synchronized (r) {
r.dosomething();
}
}
這是可取的,爲什麼呢?
此外,我也可以鎖定類DBResource。這將如何不同?
或者,使用專用鎖對象。這是不是氣餒或首選,爲什麼?
謝謝。
@Makoto:我不同意,我認爲這是關於鎖定代碼所屬的位置,在資源被保護或訪問資源的任務中。 –