栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java线程创建的方式及其优缺点

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java线程创建的方式及其优缺点

Java创建的方式

Java创建线程的方式有三种:

  1. 继承Thread类。
  2. 实现Runnable接口,并作为参数传递给Thread对象。
  3. 实现Callablej接口,作为参数传递给FutureTask,将FutureTask对象传递给Thread对象,并可获取到线程的返回值。
//通过继承Thread的方式,创建Java线程
public class ThreadTask extends Thread {
	//接收外部传递进来的参数
	private String param;
    @Override
    public void run() {
        System.out.println("I am thread");
        System.out.println("外部参数"+param);
    }
    public static void main(String[] args) {
        ThreadTask t1 = new ThreadTask();
        t1.start();
    }
    
    //接收外部传递进来的参数
	public void setParam(String param){
		this.param = param;
	}
}

//通过实现Runnable接口的方式,创建Java线程
public class RunableTask implements Runnable{
    @Override
    public void run() {
        System.out.println("I am runable");
    }
    public static void main(String[] args) {
        RunableTask runableTask = new RunableTask();
        Thread t1 = new Thread(runableTask);
        t1.start();
    }
}

//通过实现Runnable接口的方式,创建Java线程
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CallableTask implements Callable {
    @Override
    public String call() throws Exception {
        return "I am Callable";
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask futureTask = new FutureTask<>(new CallableTask());
        Thread t1 = new Thread(futureTask);
        t1.start();
        //获取线程的返回值
        String res = futureTask.get();
        System.out.println(res);
    }
}
线程创建方式的优缺点
  1. 继承Thread类的优缺点:

优点:
1:可以在run里直接使用this对象表示当前线程对象,无需使用Thread.currentThread();
2:我们可以根据特殊的需求,可以在子类里创建成员变量,通过set方法或者构造函数接收外部传递进来的参数。
缺点:
1:Java不支持多线程,如果继承了Thread类,就不能在继承其他类。
2:任务与代码没有分离,当多个线程执行一样的任务时,需求多分任务代码,导致代码量重复。Runnable则没有这个限制。
3:任务没有返回值。

  1. 实现Runnable接口的优缺点

优点:
1:多个线程可以共用同一个run方法的代码。
缺点:
1:和继承Thread方式一样,任务没有返回值。
2:线程不支持set方法和构造函数传参,只能使用主线程里被声明为final的变量。在Runnable接口里设置变量,将是线程的共享变量,不属于线程私有变量。

  1. 实现Runnable接口的优缺点

优点:可以拿到任务的返回结果。
缺点:线程不支持set方法和构造函数传参,只能使用主线程里被声明为final的变量。

开发中请根据他们的优缺点,选择线程创建的方式。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号