могу понять, почему мои функции не уходят в отдельные потоки, а выполняются на UI.
Есть Activity, в ней простенький код:
threadHelper.runTest()
Log.d("SYNC TEST", "BETWEEN 1 AND 2")
threadHelper.runTest()
Log.d("SYNC TEST", "BETWEEN 2 AND 3")
threadHelper.runTest()
threadHelper.runTest() - это функция, которая должна создать новый тред и усыпить его на 10 секунд, в учебных целях.
Вот она, эта функция:
public void runTest() {
new Thread(new Runnable() {
@Override
public void run() {
synchronized (obj) {
try {Thread.sleep(10000);}
catch (InterruptedException e) {e.printStackTrace(); }
}
}
}).run();
Log.d("SYNC TEST", "GET OUT!");
}
Если запустить код, то получится следующее:
UI тред спит 10 секунд
GET OUT!
BETWEEN 1 AND 2
UI тред спит 10 секунд
GET OUT!
BETWEEN 2 AND 3
UI тред спит 10 секунд
GET OUT!
Т.е вызовы threadHelper.runTest() в UI потоке происходят, и я не понимаю почему. Я же усыпляю тред который создал через new Thread(). Почему так?
Потому что ты вызываешь run() вместо start().
Обсуждают сегодня