面试题:创建线程有几种方式

网上有说3或者4种,他们说的4种或者3种是把什么线程池也放进去了,今天我们就来看下oracle官网的描述,

thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.

Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. Each thread may or may not also be marked as a daemon. When code running in some thread creates a new Thread object, the new thread has its priority initially set equal to the priority of the creating thread, and is a daemon thread if and only if the creating thread is a daemon.

When a Java Virtual Machine starts up, there is usually a single non-daemon thread (which typically calls the method named main of some designated class). The Java Virtual Machine continues to execute threads until either of the following occurs:

  • The exit method of class Runtime has been called and the security manager has permitted the exit operation to take place.
  • All threads that are not daemon threads have died, either by returning from the call to the run method or by throwing an exception that propagates beyond the run method.

 

There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started. For example, a thread that computes primes larger than a stated value could be written as follows:

这是oracle官网对Thread类的描述:https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Thread.html

我看到的是jdk14 但是不会影响对我们今天面试题的答案

在上面英文描述最后的一段话中我们可以找到答案:

There are two ways to create a new thread of execution

就是创建线程有二种方式,一个是继承Thread,还有一种是实现Runnable接口,这是官网说明的,够有权威的吧

至于说什么3或者4种,比如说Callable或者线程池只是基于线程做了一些封装操作而已,底层实现还是线程,它的本质没有变,

二种创建线程方式的对比

肯定是推荐使用实现Runnable方式创建线程的,理由支持如下:

1:如果是继承Thread,因为Java只支持单继承,这就限制了继承其他类,也就限制了它的扩展

2:我们在平时开发中很少说单独去开启一个线程,大部分都是使用线程池去管理线程,那么线程池需要的是Runnable,

3:如果使用继承Thread类开启线程的话,每次都是去开启一个线程,这样内存消耗比较大,如果是使用Runnable结合线程池可以降低消耗

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值