1.1 Runnable
Конечно! Вот несколько примеров использования интерфейса Runnable
в Java, чтобы лучше понять его работу.
Пример 1: Простая реализация Runnable
В этом примере мы создадим класс, реализующий интерфейс Runnable
, и запустим его в отдельном потоке.
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Running in thread: " + Thread.currentThread().getName() + " - Count: " + i);
try {
Thread.sleep(500); // Задержка в 500 мс
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread1 = new Thread(myRunnable);
Thread thread2 = new Thread(myRunnable);
thread1.start();
thread2.start();
}
}
Пример 2: Использование анонимного класса
В этом примере мы создадим поток, используя анонимный класс, реализующий интерфейс Runnable
.
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Running in thread: " + Thread.currentThread().getName() + " - Count: " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
}
Пример 3: Использование лямбда-выражения (Java 8 и выше)
Если вы используете Java 8 или выше, вы можете использовать лямбда-выражения для упрощения кода.
public class Main {
public static void main(String[] args) {
Runnable myRunnable = () -> {
for (int i = 0; i < 5; i++) {
System.out.println("Running in thread: " + Thread.currentThread().getName() + " - Count: " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread thread = new Thread(myRunnable);
thread.start();
}
}
Пример 4: Запуск нескольких потоков
В этом примере мы создадим несколько потоков, которые будут выполнять одну и ту же задачу.
class MyRunnable implements Runnable {
private String threadName;
public MyRunnable(String name) {
this.threadName = name;
}
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(threadName + " is running - Count: " + i);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread thread1 = new Thread(new MyRunnable("Thread 1"));
Thread thread2 = new Thread(new MyRunnable("Thread 2"));
Thread thread3 = new Thread(new MyRunnable("Thread 3"));
thread1.start();
thread2.start();
thread3.start();
}
}
Заключение
Эти примеры показывают, как использовать интерфейс Runnable
для создания потоков в Java. Вы можете реализовать Runnable
в своем классе, использовать анонимные классы или лямбда-выражения для упрощения кода. Это позволяет вам легко управлять потоками и разделять логику выполнения задачи от управления потоками.