Назад к вопросам
Junior
68
questionbank
Какими средствами языка программирования Java можно создавать потоки?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Наследование от класса
Thread:
// Создание класса, наследующего от Thread
class MyThread extends Thread {
@Override
public void run() {
// Логика выполнения потока
}
}
// Создание и запуск потока
MyThread thread = new MyThread();
thread.start();
- Реализация интерфейса
Runnable:
// Создание класса, реализующего Runnable
class MyRunnable implements Runnable {
@Override
public void run() {
// Логика выполнения потока
}
}
// Создание потока с помощью Runnable
Thread thread = new Thread(new MyRunnable());
thread.start();
- Использование пулов потоков (
ExecutorService) из пакетаjava.util.concurrent:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
// Создание пула потоков
ExecutorService executor = Executors.newFixedThreadPool(5);
// Отправка задачи на выполнение
executor.execute(new MyRunnable());
// Завершение работы пула
executor.shutdown();
- Использование
CallableиFutureдля получения результата выполнения:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
// Создание задачи с возвращаемым значением
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return "Результат выполнения потока";
}
}
// Создание пула потоков
ExecutorService executor = Executors.newSingleThreadExecutor();
// Отправка задачи на выполнение и получение Future
Future<String> future = executor.submit(new MyCallable());
try {
// Получение результата
String result = future.get();
} catch (Exception e) {
// Обработка исключений
}
// Завершение работы пула
executor.shutdown();