Извините, что здесь не ясно. Вот пример, который я имею для синхронного потока.
Моя функция listen () работает в течение 5 секунд, затем завершается. Listen () - прослушиватель UDP ...
Проблема с этим кодом, он останавливает мой основной поток (мой телефон перестал отвечать на запросы) до тех пор, пока list () не завершит 5-секундный запуск. Я хотел бы использовать асинхронный поток, чтобы избежать зависания телефона. Когда я сказал, что ничего не могу сделать со временем, я пытался сказать, что я не могу установить какой-либо таймер в функцию listen (), затем измерить истекшее время и выйти через 5 секунд. Не могу этого сделать.
Thread t = new Thread() {
public void run() {
try {
listen();
} catch (IOException e) {
Log.d(TAG, "IOException (Discovery) " + e);
e.printStackTrace();
}
synchronized (this) {
notifyAll();
}
}
};
synchronized (t) {
t.start();
try {
t.join(5000); // 5 sec
} catch (InterruptedException e) {
e.printStackTrace();
}
}