首页
题库
面试
求职
课程
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
说说线程的创建方式
[问答题]
说说线程的创建方式
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(300)
分享
纠错
57个回答
添加回答
121
%修身养性自律提高#
创建线程有3种方式:1.继承Thread类,重写run()方法;2.实现Runnable接口,并实现该接口的run()方法;3.实现Callable接口,重写call()方法。前两种方式线程执行完后都没有返回值,最后一种带返回值;一般推荐实现Runnable接口的方式。
发表于 2022-04-06 21:57:29
回复(2)
18
别打小书包唉
线程的创建方式常用的有四种:1)集成Thread类,重写run()方法,在run方法中编写业务逻辑。2)实现Runnable接口,实现该接口的run方法。3)实现Callable接口,实现该接口的call方法。4)从线程池中取出。
发表于 2022-07-22 10:42:21
回复(0)
15
2en
创建线程有三种方式,分别是继承Thread类,实现Runnable接口,实现Callable接口,继承Thread类之后我们需要重写run()方法,方法中是我们希望这个线程执行什么操作,再创建对象的实例,通过实例对象的start()方法开启这个线程,实现runnable接口之后,我们需要实现run方法,方法中同样写我们需要执行的操作,然后将实现了接口的类作为参数创建一个Thread对象,通过这个对象的start方法开启线程,实现Callable之后,需要实现call方法,方法中写我们需要的操作,然后创建实现接口类的对象,将对象作为参数创建FurtureTask对象,再将task对象作为参数创建thread对象,调用start方法开启线程,还可以使用task对象的get方法获取返回值。他们的区别是前二者不能获取返回值,callable接口可以获得返回值,一般在实际使用中,更多使用实现接口的方式开启线程,因为接口不会占用类的继承位置。
发表于 2022-06-02 22:10:09
回复(0)
3
浪仙_
分别是继承Thread类、实现Runnable接口、实现Callable接口、线程池
发表于 2022-12-26 21:13:56
回复(0)
3
ttccq
线程有三种创建方式,分别是 1、继承Thread类,重写run()方法,无返回值 2、实现Runnable接口,并实现该接口的run()方法(推荐使用),无返回值 3、实现Callable接口,重写call()方法,有返回值
发表于 2022-06-27 15:48:46
回复(0)
3
牛客793464225号
线程的创建方式:1.继承Thread类并重写run方法。2实现runnable接口,实现接口中的run方法。3.实现Callable()接口。前两个不可以有返回值,后面的可以。实现接口更推荐使用:1.接口的复用性更强,且可以多个实现。
发表于 2022-06-18 16:32:43
回复(0)
2
hwx的offer快来
看过源码的都知道只有俩种 继承thread 实现runnable 其他的都算拓展 ok
发表于 2023-03-01 21:56:29
回复(0)
2
舒张
创建线程的三种方式:1.继承Thread类并重写run方法。2实现runnable接口,实现接口中的run方法。3.实现Callable接口实现call方法。前两个没有返回值,后面的有。实现接口的方式更推荐使用:1.接口的复用性更强,且可以多个实现。
编辑于 2022-06-22 08:46:00
回复(0)
1
o沈以诚o
1. 继承Thread类:通过创建Thread类的子类并重写其run()方法来创建线程。启动线程时,需要创建该子类的实例并调用其start()方法。 2. 实现Runnable接口:创建一个实现Runnable接口的类,实现run()方法。然后将该实现类的实例作为参数传递给Thread类的构造器,创建Thread类的实例,并通过该实例的start()方法启动线程。 3. 实现Callable接口:与Runnable接口类似,但Callable接口的call()方法可以返回值并抛出异常。Callable实例需要通过FutureTask包装后,再包装到Thread对象中执行。FutureTask还可以用来获取执行结果。 4. 使用线程池(Executor框架):通过Executor框架提供的各种线程池来创建和管理线程。这种方式可以有效地管理线程生命周期,减少创建和销毁线程的开销,并提高性能。
发表于 2024-05-26 16:06:01
回复(0)
1
在游泳的小松鼠很想潜水
1、继承Thread类,重写run()方法 2、实现Runnable接口,以及其run()方法 3、实现Callable接口,以及其call()方法,这种方式优点是可以接收返回指 4、线程池
发表于 2023-09-25 13:23:13
回复(0)
1
在努力的小师弟很伟大
线程安全问题是由于多线程操作共享变量导致共享变量异常的问题,解决方式通常有三种:原子类,volatile关键字和锁,原子类是juc automic包下的一些类,他们提供了一个比较和替换机制,就是符合预期的共享变量更新,反之不更新,volatile关键字是将当前共享变量的内存刷新给主内存,导致其他线程读一个volatile时,jvm会将该线程的本地内存视为无效,迫使他去主内存重新读取变量。锁有两种:synchronized和lock接口,前者没有考虑超时机制和多个条件变量,以及阻塞队列,而后者解决了上述问题,此外juc包还提供了很多工具来解决并发问题,有信号量Semaphore:控制特定资源的线程数。屏障:设置屏障,直到最后一个线程到达的时候打开屏障,继续执行。CountDownLatch:让一个或多个线程等待其他线程执行结束。还可以用使用ThreadLocal定义线程局部变量。
编辑于 2023-02-28 14:56:57
回复(0)
1
自信的大白菜
1.创建线程常见有三种方式,分别是继承Thread类,实现Runnable接口,实现Callable接口
2.继承Thread类:我们需要重写run()方法,方法中是我们希望这个线程执行什么操作,再创建对象的实例,通过实例对象的start()方法开启这个线程
3.实现runnable接口:我们需要实现run方法,方法中同样写我们需要执行的操作,然后将实现了接口的类作为参数创建一个Thread对象,通过这个对象的start方法开启线程
4.实现Callable接口:需要实现call方法,方法中写我们需要的操作,然后创建实现接口类的对象,将对象作为参数创建FurtureTask对象,再将task对象作为参数创建thread对象,调用start方法开启线程,还可以使用task对象的get方法获取返回值。
5.他们的区别是前二者不能获取返回值,callable接口可以获得返回值,一般在实际使用中,更多使用实现接口的方式开启线程,因为接口不会占用类的继承位置。
6.通过线程池创建
编辑于 2023-02-25 09:32:02
回复(0)
1
小不点呀
线程的创建方式:1.继承Thread类并重写run方法。2实现runnable接口,实现接口中的run方法。3.实现Callable()接口。前两个不可以有返回值,后面的可以。实现接口更推荐使用:1.接口的复用性更强,且可以多个实现。
发表于 2022-10-08 00:58:15
回复(0)
0
希望被offer砸头的菜鸡java
线程的创建方式有三种,第一种是继承Thread类,需要重写run方法,第二种是实现Runnable接口,需要重写run方法;第三种是实现Callable接口,需要重写call方法,并且call方法可以有返回值,可以通过Future类的实现对象通过get方法拿到,且返回值的类型可以通过在实现接口的声明处通过泛型指定。
发表于 2024-06-03 12:43:52
回复(0)
0
桑a
3种:继承Thread类;实现Runnable接口;实现Callable接口(通过Future来包装) 推荐使用Runnable接口,Thread由于java单继承机制相较来说不太灵活,Callable接口代码繁杂(加上了Future),Runnable代码灵活且较简洁。
发表于 2024-05-31 02:29:56
回复(0)
0
夌颩
Thead t = new Thread(new Runable(){ public run(){ } }) t.start() 线程池
发表于 2024-05-28 15:18:33
回复(0)
0
乖小孩子呀
创建线程:1、继承Thread类,重写run()方法 2、实现Runnable接口,并实现该接口的run()方法,3、实现Callable接口,重写call()方法 用继承Thread类的方法没有返回值,实现Runnable接口的方法也没有返回值 但是实现Callable接口有返回值 一般都是用Runnable接口的方法
发表于 2024-05-26 11:13:03
回复(0)
0
moonchildddddd
实现Runnable接口,继承Thread类,Callable接口。再比如线程池,一般来说推荐使用线程池
发表于 2024-05-25 15:42:28
回复(0)
0
lily02yaya
1. 继承Thread类,重写run方法,在run方法中编写线程的业务逻辑,再调用start方法开启这个线程 2. 实现Runable接口,重写run方法,并将实现了Runbale接口的类实例化,作为参数传创建Thread对象,通过这个对象的start方法开启线程 3. 实现Callable接口,实现call方法,并将这个接口的实现类作为参数传递创建FutureTask对象,再将task对象作为参数创建Thread对象,调用start方法开启线程,还可以通过task对象的get方法获得线程的返回值 4. 可以从线程池中开启获取多个线程。一般开发中使用实现Runable接口的方法,因为接口的实现代码复用性更强,且可以多个实现。
发表于 2024-05-23 11:56:48
回复(0)
0
牛客311133904号
创建线程有3种方式: 1.继承Thread类,重写run()方法; 2.实现Runnable接口,并实现该接口的run()方法; 3.实现Callable接口,重写call()方法。 前两种方式线程执行完后都没有返回值,最后一种带返回值;一般推荐实现Runnable接口的方式(灵活性:Java允许接口多实现;资源共享:多个线程可以共享同一个Runnable实例)
发表于 2024-05-21 23:07:49
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Java
上传者:
real19931
难度:
57条回答
300收藏
1318浏览
热门推荐
相关试题
虚拟存储器不能解决的问题是()
操作系统
评论
(1)
下列UML图中不是UML2规范新增...
UML
评论
(1)
()不是UML体系的组成部分。
UML
评论
(1)
UML中关联的多重度是指()
UML
评论
(1)
不是供应链相关专业的,为什么选择这...
供应链管理
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题