繁体   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