我正在 Android 上使用蓝牙;缺点是,如果套接字当前未连接,我只想打开一个新线程来接收 - 我正在使用 boolean 值进行测试。
所以:
class Main {
protected boolean mConnected;
public void startClientConnection() {
ClientRunnable thread = new ClientRunnable() {
@Override public void manageSocket(BluetoothSocket pSocket) {
synchronized (this) {
if (!mConnected) openReadingThread(pSocket);
} // end synchronized()
} // end manageSocket()
}; // end ClientRunnable
} // end startClientConnection()
} // End CLASS
已编辑: 本质上,我需要知道的是,因为Runnable会在单独的线程上运行,但是mConnected变量只会在主线程中改变,是否需要同步。
最佳答案
在这种情况下,您创建的每个线程都有自己的锁(对象本身) 您应该使用静态的东西(例如类)作为锁。
关于Java 线程 - 这是同步的正确使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915163/