线程的四种创建方式

简介: 线程的四种创建方式

四种创建线程的方式:

  • 继承 Thread 类
  • 实现 Runnable 接口
  • 通过 ExecutorService 和 Callable<Class> 实现有返回值的线程
  • 基于线程池的execute(),创建临时线程

1 继承 Thread 类

Thread 类实现了 Runnable 接口并定义了操作线程的一些方法,我们可以通过创建类时继承 Thread类来创建一个线程。

具体实现:

(1)创建一个继承Thread的类ThreadDemo

(2)重新run()方法

调用步骤:

(1)创建ThreadDemo 类的对象t1

(2)执行t1.start() 方法来启动线程

//创建线程类
public class ThreadDemo extends Thread {
    //重写run()方法
    @Override
    public void run() {
        for(int i = 0;i<1000;i++) {
            System.out.println("Thread::"+i);
        }
    }
}
/***********************************************************************/
//调用线程
//创建线程对象
ThreadDemo t1 = new ThreadDemo();
//启动线程
t1.start();

run()方法中是线程的具体逻辑操作,

start()是一个native本地方法,通过操作系统启动一个线程。

2 实现 Runnable 接口

通过实现Runnable 接口来创建线程类 RThread,但是使用的时候,仍需要创建Thread 对象,把RThread的对象当成参数传入。

具体操作:

(1)实现Runnable 接口创建线程类 RThread

(2)重写run()方法

调用步骤:

(1)创建RThread 类的对象 rThread

(2)创建Thread类对象,并把rThread当成参数传入,相当于对rThread进行了封装。

(3)通过start()方法启动线程

//实现Runnable 接口创建线程类 RThread
public class RThread implements Runnable {
    @Override
    //重写run()方法
    public void run() {
        for(int i = 0;i<1000;i++) {
            System.out.println("Thread::"+i);
        }
    }
}
/***********************************************************************/
//调用线程
//创建RThread 类的对象 rThread
RThread rThread = new RThread();
//创建Thread类对象,并把rThread当成参数传入,相当于对rThread进行了封装。
Thread t2 = new Thread(rThread);
//通过start()方法启动线程
t2.start();



相关文章
|
6天前
|
缓存 C语言
线程是如何创建的
【2月更文挑战第14天】
|
6天前
|
缓存 Java
线程的四种创建方式
线程的四种创建方式
|
6天前
线程间的同步的方式有哪些
线程间的同步的方式有哪些
|
6天前
|
Java API 调度
Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)
Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)
58 0
Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)
|
6月前
|
存储 安全 Java
线程池的7种创建方式(二)
线程池的7种创建方式
|
6月前
|
缓存 Java
线程池的7种创建方式(一)
线程池的7种创建方式
114 0
|
8月前
|
Java API 调度
线程的创建和使用
线程的创建和使用
32 0
|
9月前
|
Java
创建多线程的方式四:使用线程池
创建多线程的方式四:使用线程池
44 0
|
10月前
|
消息中间件 Java
什么是线程和进程?是如何创建、同步、通信、销毁的?
什么是线程和进程?是如何创建、同步、通信、销毁的?
106 0
|
C++
线程的2种创建方式
当一个类继承了Thread类,该类就可以当作线程使用。 run方法其实是一个普通方法,是Runnable接口的一个方法。 Thread类也是进行了重写。 真正实现多线程的start方法中的start0方法。 这是一个本地native方法,由c/c++实现。
64 0