我何时在Android游戏中同步方法或在我的方法中使用同步块?

Ale*_*zzi 11 android canvas opengl-es synchronize

我正在研究在Android中编写简单的图形代码,我注意到了一些synchronized()块.

这背后的原因是什么,我怎么知道什么时候应该"同步"我的代码?

Ant*_*ney 26

synchronized语句块通常用于并发编程(多线程应用程序),其中您的应用程序使用许多线程.作为Android游戏的一个例子,你可以有一个带有客户端处理的线程,另一个用于服务器,一个用于产生其他进程,等等.

关键字本身确保您的方法一次只能访问一个线程,这使它们成为线程安全的.如果您的应用程序在不使用synchronized语句的情况下共享资源,则存在发生死锁的风险.

死锁会导致挂起,即进程挂起.应该不惜一切代价避免死锁,特别是处理手机处理器的大小.

  • 没有线程同步就不会发生死锁(使用synchronized是最简单的方法,但不是唯一的方法).并且处理器的大小(或速度)与死锁无关.核心数量可能(但这还不是人们在2010年所担心的). (2认同)