Java 创建线程的4种方式


Java 创建线程的4种方式

继承 Thread 类
Thread thread = new Thread(new Thread() {
    @Override
        public void run(){
        System.out.println("继承 Thread 类");
    }
});
thread.start();
实现 Runnable 接口
new Thread(new Runnable() {
    @Override
        public void run() {
        System.out.println("实现 Runnable 接口");
    }
}).start();
使用 FutureTask 和 Callable组合创建有返回值线程
FutureTask futureTask = new FutureTask((Callable<String>) () -> {
    TimeUnit.SECONDS.sleep(5);
    return "使用 FutureTask 和 Callable组合创建有返回值线程";
});

new Thread(futureTask).start();// 必须把任务交给线程类去启动
Object o = futureTask.get();// get() 方法会导致阻塞
System.out.println(1111);

if (futureTask.isDone()) {
    System.out.println(o);
}
使用 Executors 线程池创建线程
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<Integer> future = executor.submit(() -> {
    TimeUnit.SECONDS.sleep(5);
    int a = 22;
    int b = 10;
    return a * b;
});
Integer s = future.get();
System.out.println(s);

executor.shutdown();

其中,在 JDK1.8 中,使用Lambda表达式可以简化部分代码

new Thread(() -> {
    System.out.println("使用Thread执行线程");
}).start();

注意:FutureTask 的 get() 方法,会导致线程阻塞


文章作者: many2many
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 many2many !