Java并发编程如何创建并运行线程(java,开发技术)

时间:2024-05-02 18:37:45 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Java%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%B9%B6%E8%BF%90%E8%A1%8C%E7%BA%BF%E7%A8%8B

这种方式是最基础的一种方式,学过java的朋友都知道,不做赘述。需要注意的是:覆盖实现使用的是run方法,运行线程是start方法。

第二种实现方式仍然很基础,继承Runnable接口,重写run方法实现线程运行逻辑。需要注意的:运行线程需要套一层new Thread

第三种方式是实现Callable接口,Callable接口与Runable接口都能实现线程。

区别如下:

Callable接口实现线程方法是call, Runable接口实现线程方法是run

Callable有返回值, Runable接口不能有返回值

Callable接口方法call返回值可以设置泛型,如下例子中使用String数据类型

Callable接口方法call方法可以抛出异常,Runable接口run方法不可以抛出异常

Callable接口方法通过new Thread(futureTask).start()运行,FutureTask的get方法可以获取Callable接口方法call方法的返回值

如果Callable接口方法call方法异常,在FutureTask的get方法调用时也会抛出同样的异常

从JDK5版本开始,java默认提供了线程池的支持,用线程池的方式运行线程可以避免线程的无限扩张导致应用宕机,同时也节省了线程频繁创建与销毁的资源与时间成本。

线程池ExecutorService使用execute方法运行Runnable接口run方法的线程实现,execute方法与run方法的共同特点是没有返回值。

从上面的结果中可以看出,线程池中包含五个线程。线程运行完成之后并不销毁,而是还回到线程池,下一次执行时从线程池中获取线程资源再次运行。

下面的例子线程池ExecutorService使用submit方法运行Callable接口call方法的线程实现,submit方法与call方法的共同特点是存在返回值。

Callable接口call方法的返回值可以由泛型定义

ExecutorService线程池submit方法的返回值是Future

Future的get方法可以获取call方法的返回值,同时如果call方法抛出异常,Future的get方法也会抛出异常。

上文代码中有一个小小的语法糖,retList.forEach(System.out::println);是java8提供的方法引用

本文:Java并发编程如何创建并运行线程的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Flutter如何实现文本滚动高亮效果下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18