我是一个模拟人,学习如何在 android 上编码,所以如果这个问题听起来很愚蠢,请多多包涵。
我了解同步的要点。如果我有两个线程可以访问和修改的数据,则可能导致两个线程中数据变量的值不一致。
使方法同步并锁定它们直到一个线程完成执行它(执行任何条件检查)是有意义的,但是为什么它对单个语句很重要?这对多个语句很重要,因为线程一个有可能在 2 个或多个语句之间退出可运行状态,但我不明白单个语句的意义何在。
这是一个例子
如果我有一个可以被调用的监听器,比如说一个游戏线程,它会修改一个数据变量,我为什么要这样做......
public void onCompletionListener(MediaPlayer player){
synchronized (this){
isPrepared = false;
}
}
我的音乐课中还有另一种方法叫停止
public void stop(){
mediaPlayer.stop()
synchronized(this){
isPrepared = false;
}
}
我为什么要费心去做这件事?这样做是为了两个线程之间值的一致性吗?如果是这样,我可以使用 volatile 之类的东西吗?那会更好吗?
我问是因为我听说同步很昂贵。有更好的选择吗?
提前感谢大家回答我的问题。我很感激。编辑:我在单个语句上阅读了此同步?
我想我理解..如果有人能详细说明那将是很棒的。我最初关于 volatile 是否是更好的选择的问题的第二部分也没有得到解答:)