Потоки в Java
Потоки в Java – це механізм, який дозволяє виконувати декілька завдань одночасно в одному процесі. Вони особливо корисні для програм, які потребують паралельного виконання задач, таких як обробка великих обсягів даних, обслуговування багатокористувацьких систем або робота з мережевими з'єднаннями.
Потік (Thread) – це окремий шлях виконання в межах програми. Кожен потік має свій власний стек викликів, але розділяє спільну пам'ять з іншими потоками в межах одного процесу.
Способи стверення
- Успадкування класу
Threadта перевизначити методrun():class MyThread extends Thread { public void run() { System.out.println("Потік працює!"); } } - Реалізувати інтерфейс
Runnableта перевизначити методrun():class MyRunnable implements Runnable { public void run() { System.out.println("Потік працює"); } } - Використати лямбда-вирази (Java 8+):
Thread thread = new Thread(() -> System.out.println("Потік працює"));
Методи для керування потоками
start()- запускає потік, викликаючи методrun()sleep()- призупиняє виконання потоку на заданий часjoin()- очікує завершення іншого потоку
Приклад програми з трьома потоками:
public class Main extends Thread {
@Override
public void run(){
for(int i=0; i<20 ;i++){
printMsg();
}
}
public static void main(String[] args) {
Main object = new Main();
object.start();
Thread tread = new Thread(){
public void run(){
for(int i=0; i<20 ;i++){
printMsg();
}
}
};
tread.start();
for(int i=0;i<20;i++){
printMsg();
}
}
private static void printMsg(){
Thread t = Thread.currentThread();
String name = t.getName();
System.out.println(name);
}
}
Приблизний результат роботи (порядом може бути іншим):
main main main main Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 main main main main main main main main Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-0 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 Thread-1 main Thread-0 Thread-1 main main main main main main main
Коментарі
Дописати коментар