多线程_02_线程创建

java常见的创建线程的方式有三种,进阶一点还可以采用线程池进行创建,但是本质上是一样的。

基础的创建线程通常继承Thread类,实现Runnable和Callable接口的方式也是通过实现类对象作为Thread构造方法的参数的形式进行使用。

三种方法的主要特点:

   Thread 类,只能单继承

   Runnable接口,可以多实现

 Callable接口,可以多实现,并且可以抛出异常 和有 返回值

1. 继承类Thread

public class MyThread extends Thread {
    @Override
    public void run() {
        super.run();
        System.out.println("通过继承Thread创建的线程,线程名称为:" + Thread.currentThread().getName());
        System.out.println("通过继承Thread创建的线程,线程名称为:" + this.getName());
    }
}

调用方式:

MyThread myThread = new MyThread();
myThread.setName("thread");
myThread.start();

2. 实现接口Runnable

Runnable接口截图:

实现Runnable接口:

package com.ahd.study;

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("通过实现Runnable接口创建的线程,线程名称为:" + Thread.currentThread().getName());
    }
}

调用:

MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.setName("runnable");
thread.start();

3. 实现接口Callable(callable实现了Runnable接口)

Callable接口截图:

 实现Callable类:

package com.ahd.study;

import java.util.concurrent.Callable;

public class MyCallable implements Callable{
    @Override
    public Object call() throws Exception {
        System.out.println("通过实现Callable创建的线程,线程名称为:" + Thread.currentThread().getName());
        return null;
    }
}

调用:

MyCallable myCallable = new MyCallable();
FutureTask task = new FutureTask(myCallable);
Thread thread1 = new Thread(task);
thread1.setName("callable");
thread1.start();
原文地址:https://www.cnblogs.com/aihuadung/p/13153065.html