前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java线程的三种创建方法

Java线程的三种创建方法

原创
作者头像
背雷管的小青年
修改2021-02-05 09:58:35
5270
修改2021-02-05 09:58:35
举报

线程的三种创建方法

1)继承Thread类, 重写run(方法,run()方法代表线程要执行的任务。

• Thread是一个线程类,位于java.lang包下

构造方法

说明

Thread()

创建一个线程对象

Thread(String name)

创建一个具有指定名称的线程对象

Thread(Runnable target)

创建一个基于Runnable接口实现类的线程对象

Thread(Runnable target,String name)

创建一个基于Runnable接口实现类,并且具有 指定名称的线程对象。

• Thread类的常用方法

方法

说明

public void run()

线程相关的代码写在该方法中,一般需要重写

public void start()

启动线程的方法

public static void sleep(long m)

线程休眠m毫秒的方法

public void join()

优先执行调用join()方法的线程

简单使用

代码语言:txt
复制
package com.xmaven;

/**
 * @ClassName ThreadTest
 * @Description TODO Thread线程创建的方式
 * @Author Ambition
 * @Date 2021/1/19 13:37
 * @Version 1.0.0
 **/
public class ThreadTest extends Thread{
    @Override
    public void run() {
        System.out.println(getName()+"线程开始执行了!");
    }

    public static void main(String[] args) {
        new ThreadTest().start();
    }
}

2)实现Runnable接口, 重写run()方法, run(方法代表线程要执行的任务。

• 只有一个方法run();

• Runnable是Java中用以实现线程的接口,

• 任何实现线程功能的类都必须实现该接口

代码语言:txt
复制
package com.xmaven;

/**
 * @ClassName Test
 * @Description TODO Runnable创建线程的方式
 * @Author Ambition
 * @Date 2021/1/19 13:56
 * @Version 1.0.0
 **/
class PrintRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "正在运行");
    }
}

public class Test {
    public static void main(String[] args) {
        PrintRunnable pr = new PrintRunnable();
        Thread t1 = new Thread(pr);
        t1.start();
    }
}

3)实现callable接口, 写cal()方法, call()作为线程的执行体, 具有返回值,并且可以对异常进行声明和抛出;使用star()方法来

1、创建Callable接口的实现类, 并实现cal()方法, 该cal()方法将作为线程执行体,并且有返回值。

2、创建Callable实现类的实例, 使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

3、使用FutureTask对象作为Thread对象的target创建并启动新线程。

4、调用FutureTask对象的get()方法来获得 子线程执行结束后的返回值。

示例代码

1、创建Callable接口的实现类, 并实现cal()方法

代码语言:txt
复制
package com.xmaven;

import java.util.concurrent.Callable;

/**
 * @ClassName ThirdThread
 * @Description TODO
 * @Author Ambition
 * @Date 2021/1/19 14:05
 * @Version 1.0.0
 **/
public class ThirdThread implements Callable<String> {


    @Override
    public String call() throws Exception {
        //方法类型可以根据要返回的值的类型进行确定
        String str = "多线程创建的第三种形式";
        return str;
    }
}

2、测试线程

代码语言:txt
复制
package com.xmaven;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @ClassName ThirdThreadTest
 * @Description TODO
 * @Author Ambition
 * @Date 2021/1/19 14:09
 * @Version 1.0.0
 **/
public class ThirdThreadTest {
    public static void main(String[] args) {
        Callable<String> call = new ThirdThread();
        FutureTask<String> futureTask = new FutureTask<>(call);
        Thread thread = new Thread(futureTask);

        //启动线程
        thread.start();

        //获取call方法的返回值,先启动线程才可以获取到Call的返回值;
        try {
            System.out.println(futureTask.get());
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线程的三种创建方法
    • 1)继承Thread类, 重写run(方法,run()方法代表线程要执行的任务。
      • 2)实现Runnable接口, 重写run()方法, run(方法代表线程要执行的任务。
        • 3)实现callable接口, 写cal()方法, call()作为线程的执行体, 具有返回值,并且可以对异常进行声明和抛出;使用star()方法来
          • 示例代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档