Я абсолютно нова в поняттях потоків в JAVAі хоча я спробував пару кодів, і вони працюють, я дійсно не розумію, що відбувається у фоновому режимі. Наприклад, я написав цей фрагмент коду:
public class myThreadTest implements Runnable {
private static void ping(String text, int count)
throws InterruptedException {
for (int i = 0; i<count; i++) {
System.out.println("ping "+text+i+"...");
Thread.sleep(1000);
}
}
public void run() {
try {
ping("run ",10);
} catch (InterruptedException e) {
}
}
public static void main(String[] args) {
(new Thread(new myThreadTest())).start();
try {
ping("main ", 5);
} catch (InterruptedException e) {
}
}
}
чи виконуються тут 2 потоки: один працює з основного, а інший - із запуску методу? Оскільки результат, який я отримую, головний, запустити, основний, запустити, запустити, основний ... щось подібне.
Відповіді:
3 для відповіді № 1Так, обидва виконують одночасно.
Потік - це потік виконання програми. Віртуальна машина Java дозволяє програмі одночасно виконувати кілька потоків виконання.
Я дуже рекомендую це документи перш ніж починається кодування. добрий везіння
2 для відповіді № 2
Нитки в Java в основному пов'язані з одночасністю, що є поняттям кількох речей, що відбуваються одночасно. Нитка - це самостійний шлях виконання в межах програми.
З вашої програми я бачу, як починається ваш коддва потоки при запуску виконуючи першу команду для циклу сплячого протягом 1 секунди, а потім запустити метод запуску і назад і вперед, поки цикл for не вичерпається, тому запуск продовжується до 9
2 для відповіді № 3
Це правильно. Спробуйте надрукувати ідентифікатор теми в твоїй ping()
метод, щоб побачити, що різні потоки запущені (ви також можете назвати свої теми, і я дотримуюся цього як практика, щоб я зрозумів, який потік робить, що)
0 для відповіді № 4
Є дві нитки. Один з потоків створюється і починає виконувати його run
метод асинхронно за рахунок start
дзвінок в основний блок. Інший потік виконує main
Сам метод.