一.实现Runnable接口
static class RunnableImpl implements Runnable {
@Override
public void run() {
log.info("通过实现Runnable接口实现线程:{}", Thread.currentThread().getName());
}
}
二.继承Thread类
static class ThreadImpl extends Thread {
@Override
public void run() {
log.info("通过继承Thread类实现线程:{}", Thread.currentThread().getName());
}
}
三.实现Callable接口
static class CallableImpl implements Callable<String> {
@Override
public String call() throws Exception {
log.info("通过实现Callable接口实现线程:{}", Thread.currentThread().getName());
return "callable创建线程成功";
}
}
四.通过线程池创建
ExecutorService executorService = Executors.newFixedThreadPool(5); executorService.submit(new RunnableImpl());
Future<String> future = executorService.submit(new CallableImpl());
五.测试
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 1.实现Runnable接口
new Thread(new RunnableImpl()).start();
// 2.继承Tread类
new ThreadImpl().start();
/**
* 3.实现Callable接口
* 原理:通过RunnableFuture把Callable接口实现类进行包装
* 实际上启动线程还是通过 executorService.submit(new Runnable实现类()); 方法启动线程的
*
*/
new Thread(new FutureTask<String>(new CallableImpl())).start();
// 4.线程池实现
ExecutorService executorService = Executors.newFixedThreadPool(5);
executorService.submit(new RunnableImpl());
Future<String> future = executorService.submit(new CallableImpl());
String result = future.get();
log.info("call方法返回结果:{}", result);
executorService.shutdown();
}
Java多线程实现方法总结
猜你喜欢
转载自blog.csdn.net/weixin_39352976/article/details/108615342
今日推荐
周排行