Я использую Bluetooth на Android; Короче говоря, я только хочу открыть новый поток для получения, если сокет в настоящее время не подключен - Я тестирую это с помощью логического.Java Thread - это правильное использование синхронизации
Итак:
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 будет изменен только в основной Thread, нужно ли его синхронизировать.
1. Возможно ли, чтобы в течение двух этих потоков выполнялось одно и то же время? 2. Важен ли только один поток внутри этого метода за раз? – Cruncher
@Cruncher Да, две отдельные Threads используют этот метод для запуска новой Thread, которая открывает Thread для чтения ввода из Stream. И да, Thread для чтения из Stream нужно только вызывать один раз. Кроме того, спасибо за переделку коммутатора. –