java task如何使用
Java Task 的基本概念
Java Task 通常指通过多线程或并发工具(如 java.util.concurrent)执行异步任务。核心类包括 Runnable、Callable、Future 和 ExecutorService。
实现 Runnable 接口
通过实现 Runnable 接口定义任务逻辑,适合无返回值的场景:
public class MyTask implements Runnable {
@Override
public void run() {
System.out.println("Task executed by " + Thread.currentThread().getName());
}
}
// 使用方式
Thread thread = new Thread(new MyTask());
thread.start();
使用 Callable 和 Future
Callable 允许任务返回结果,通过 Future 获取异步结果:
import java.util.concurrent.*;
public class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return "Result from " + Thread.currentThread().getName();
}
}
// 提交任务并获取结果
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new MyCallable());
System.out.println(future.get()); // 阻塞直到结果就绪
executor.shutdown();
线程池管理任务
推荐使用线程池(如 ThreadPoolExecutor)高效管理任务:
ExecutorService pool = Executors.newFixedThreadPool(4);
for (int i = 0; i < 10; i++) {
pool.submit(() -> {
System.out.println("Task " + Thread.currentThread().getName());
});
}
pool.shutdown();
定时任务调度
通过 ScheduledExecutorService 实现周期性任务:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(
() -> System.out.println("Periodic Task"),
0, 1, TimeUnit.SECONDS
);
// 关闭调度器
// scheduler.shutdown();
异常处理
为任务添加异常处理逻辑,避免未捕获异常导致线程终止:

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
try {
// 任务代码
} catch (Exception e) {
System.err.println("Task failed: " + e.getMessage());
}
});
注意事项
- 避免直接创建过多线程,优先使用线程池。
- 调用
shutdown()或shutdownNow()正确关闭线程池。 Future.get()会阻塞线程,必要时设置超时时间。






