创建线程的方式

~ 一、继承Thread类创建线程子类
1.在这子类中重写run方法,在run方法内写线程任务代码
2.创建该子类实例,即是创建了一个线程实例
3.调用该实例的start方法来启动该线程
二、建一个类去实现Runnable接口
1.该类去实现接口的run方法,run方法内写线程任务代码
2.创建该类实例,把该实例当作一个标记target传给Thread类,如:Thread t = new Thread(该类实例);即创建一个线程对象
3.调用线程的star方法来启用该线程

我们常见的有两种,一个是继承thread类,另一个是实现runnable接口。实现runnable接口和继承Thread类两种实现多线程方式的区别

然后对四种方式进行一个简单分类:

无返回值:

1.继承thread类

2.实现runnable接口

有返回值:

3.callable接口

4.线程池

也可以说是三种方式,线程池是一种封装好的技术。

实现callable接口会有一个泛型,这泛型即代表返回值的类型。重写call()方法,得到返回值。然后注意这里使用的时候是先将实例传入FutureTask,然后再将FutureTask传入thread类。然后再start。然后调用FutureTask的get方法就可以取得返回值,这里要注意,只有线程结束运行了才能获取到返回值,不然会一直等待,在等待计算线程出结果之前你可以先做其他事情。当然,你不知道它什么时候会结束,所以你只能在必须等待这个线程结果调用get()方法进行阻塞。如果线程一开始你就调用get方法阻塞住,那就和单线程没区别了。

这里我的理解是:实现callable接口是比较适合去固定完成一个任务,比如计算数据,去确认一件事情之类的,这样开启一个线程去做这种事情的效率就比单线程的效率比较高,这样在主线程中可以做着别的事情先,后面再需要的时候再取出来。

然后来看线程池:

其实所有的池技术都是一个道理:当创建和销毁过于频繁的时候,就会非常消耗系统资源,影响系统性能和响应速度,netty的内存池,数据库连接池,线程池,都是一样的,只不过是对象不同,但目的都是类似。所以才导致了池技术的产生。

如何创建线程?如何保证线程安全?
答:创建线程的方式一:继承Thread类(由于Java单继承的特性,这种方式用的比较少)步骤:1、继承Thread类,然后重写run方法 请点击输入图片描述 2、创建子类对象,然后调用start()方法来启动线程 请点击输入图片描述 我们可以看到这边现在只创建了一个线程,那么如果要创建多个线程要怎么做呢?通过继承Thread的方...

创建线程的方式
答:1.继承thread类 2.实现runnable接口 有返回值:3.callable接口 4.线程池 也可以说是三种方式,线程池是一种封装好的技术。实现callable接口会有一个泛型,这泛型即代表返回值的类型。重写call()方法,得到返回值。然后注意这里使用的时候是先将实例传入FutureTask,然后再将FutureTask传入thread类。然后再st...

创建多线程有几种方法
答:new Thread(thread,"有返回值的线程").start();System.out.println(thread.get());} } 使用实现Runnable接口方式创建线程可以共享同一个目标对象(TreadDemo1 tt=new TreadDemo1();),实现了多个相同线程处理同一份资源。然后再看一段来自JDK的解释:The Runnable interface should be implemented by...

创建线程时推荐使用哪些方法
答:在Java中,创建线程主要有两种方式,分别是实现Runnable接口和继承Thread类。两种方式各有优缺点,下面将详细介绍。1. 实现Runnable接口:实现Runnable接口是创建线程的常见方式。实现该接口的类需要重写run()方法,线程的执行逻辑就写在run()方法中。然后,我们可以创建一个Thread对象,将该Runnable对象作为...

java创建线程的几种方式,了解一下
答:第一种方式:使用Runnable接口创建线程 第二种方式:直接继承Thread类创建对象 使用Runnable接口创建线程 1.可以将CPU,代码和数据分开,形成清晰的模型 2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法 3.有利于保持程序的设计风格一致 直接继承Thread类创建对象 1.Thread子类无法再从...

java怎么实现线程
答:1、继承Thread类创建线程 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就...

创建线程有几种不同的方式?你喜欢哪一种?为什么?
答:三种方式可以用来创建线程:继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池 实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用...

如何创建和启动一个线程
答:1、设计一个线程,产生三个线程对象,设置三个线程的休眠时间,10s,20s,30s。主要采用Thread类,Runable接口。2、thread类是java.lang包中定义的,一个类只要继承Thread类,此类就是多线程操作类使用Threa类实现。3、测试运行结果。4、使用runnable接口实现,类中没有线程名称字段,所以建立一个name属性...

创建线程有哪两种方法,它们各自的优缺点是什么?
答:线程创建方式及优缺点 1.继承Thread类 2.实现Runnable接口3.实现Callable接口 4.线程池方式 优缺点 1.继承Thread类 优点 、代码简单 。缺点 、该类无法集成别的类。2.实现Runnable接口 优点 、继承其他类。同一实现该接口的实例可以共享资源。缺点 、代码复杂 3.实现Callable 优点 、可以获得异步任务的...

创建线程推荐使用哪些方法
答:推荐使用的方法来创建线程是使用线程库中的高级接口,比如Java中的java.util.concurrent包中的ExecutorService和FutureTask,或者Python的concurrent.futures模块。Java中的ExecutorService 在Java中,ExecutorService提供了一个高级别的线程池接口,使得线程的管理和控制更为方便。你可以创建固定大小的线程池,这样你就...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网