簡體   English   中英

Java(Android)舊版代碼中的線程同步

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM