[英]Thread Synchronization in Java(Android) Legacy Code
我有一個舊版應用程序要維護,有一些類似的代碼
public class MyApplication extends Application {
...(some code)
Class cls = MyApplication.class;
__monitor_enter(cls);
...(some code)
__monitor_exit(cls);
...(some code)
}
據我所知,這里正在進行某種線程同步,但是如此處所述
此AST元素表示一個“監視”語句。 它可以是以下兩種類型之一:
__monitor_enter(lock)
__monitor_exit(lock)
此類聲明不是合法的Java構造。 與try-finally塊結合使用,它們用於表示稱為同步塊的非常高級的結構。
當前,monitors語句是只讀元素,不能由用戶創建。
在某些地方__monitor_enter
給出了錯誤,而在某些地方沒有出錯,這可能是原因所在,如果有人理解了代碼的風格,請告訴您這種聲明的目的是什么,以及我如何改進它。
編輯:
錯誤是
對於類型MyApplication,未定義方法__monitor_exit(Object)
和
未定義類型MyApplication的方法__monitor_enter(Object)
問候。
使用同步塊:
public class MyApplication extends Application {
...(some code)
synchronized (MyApplication.class) {
...(some code)
}
...(some code)
}
對於監視器,似乎它只能將特定類型的類/對象用作鎖定對象。 檢查它可以正常編譯的情況,並查看在那里使用了哪種類型的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.