大家知道创建线程到底有几种方式?有的人说两种方式、三种方式、四种方式等等不同的说辞。是否知道各个方式创建线程的步骤又有哪些?接下来一起解开疑题。
java线程创建的几种方式是什么?
java多线程的实现方式有4种,分别是继承Thread类、实现Runnable接口、实现Callable接口,从线程池中获取,其中前两种比较常用。一下就是线程创建的详细步骤以及注意的事项:
1.继承Thread类
说明:
调用start方法后并不意味着会立刻执行run方法里面的代码,只是使该线程处于可运行状态了,具体什么时候执行,要由系统来决定。该方式使用的是继承的方式,由于java不支持多继承,所以如果需要继承其他类的时候,就不能使用该方式了。
2.实现Runnable接口
说明:
该方式是实现接口的方式,限制较小,没有第一种方式的继承的问题,所以推荐使用这种方式。
3.Callable+FutureTask
说明:
Callable和Runnable功能差不多,但是相比Runnable来说还是有很多区别的,主要体现在以下3点:
(1)、Callable的call方法有返回值并且可以抛异常,而Runnable的run方法就没有返回值也没有抛异常。
(2)、Callable运行后可以拿到一个Future对象,这个对象表示异步计算结果,可以从通过Future的get方法获取到call方法返回的结果。但要注意调用Future的get方法时,当前线程会阻塞,直到call方法返回结果。
(3)、Runnable是作为线程的构造参数运行的,Callable是作为线程池的submit方法的参数运行的。
4.借助线程池
这种方式就是你通过线程池间接地去创建线程,相当于把创建线程的任务托管给线程池。线程池可以统一管理线程,使得线程调度有序,且利用效率大大提高。
线程池可以通过Executors提供的几个方法来创建,也可以通过ThreadPoolExecutor创建自定义线程池。
我整理了一些java技术资料和面试题集,供大家提升进阶,不管你是要入门学习还是想面试跳槽巩固基础,都可以免费领取一份。
下面展示部分截图,文末附免费下载方式。
第一篇:基础篇
第二篇:JVM 篇
第三篇:多线程 &并发篇
第四篇:Spring 篇
第五篇:MyBatis 篇
第六篇:Spring Boot 篇
第七篇:MySQL 篇
第八篇:Redis 篇
第九篇:Spring Cloud 篇
第十篇:Nginx 篇
第十一篇:MQ 篇
第十二篇:数据结构与算法篇
第十三篇:Linux 篇
第十四篇:简历篇
最后
整份文档一共有将近 200 页,为了不影响大家的阅读体验就只展示了部分内容,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习!