美文网首页
Java实现多线程的三种方式

Java实现多线程的三种方式

作者: hiTsung | 来源:发表于2018-06-09 17:42 被阅读0次

1. 继承Thread类

public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
}

class MyThread extends Thread{
    public void run(){
        System.out.print("Thread Body");
    }
}

继承Thread后,调用start()方法就是执行类类中的run()方法,这也是启动线程的唯一方法。它是一个native方法,当此方法调用以后并不是马上就执行多线程代码,而是把该线程变为可运行Runnable状态,什么时候执行则由操作系统决定。

2. 实现Runnable接口

public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        Thread thread = new Thread(myThread);
        thread.start();
}

class MyThread extends otherClass implements Runnable{
    public void run(){
        System.out.print("Thread Body");
    }
}

当类已经继承于别的类而不能继承Thread类时,可以使用实现Runnable接口的方法。但是在这种方法下,要先创建Thread对象,用实现Runnable接口的对象作为参数实例化该Thread对象。

3. 实现Callable接口,重写call()方法

Callable 对象实际属于Executor框架中的功能类,Callable接口和Runnable接口类似,但功能更强大

  • Callable可以在任务结束后提供一个返回值
  • Callable中的call()方法可以抛出异常,Runnable中的run()方法则不可以
  • 运行Callable可以拿到一个Future对象,Future对象表示异步计算的结果。它提供了检查计算是否完成的方法。由于线程属于异步计算模型,所以无法从其他线程中得到方法的返回值,在这种情况下,就可以用Future来监视目标线程调用run()方法的情况,当调用Future的get()方法获取结果的时候,当前线程就会阻塞,直到call()方法结束返回结果。
public class Main {
    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newSingleThreadExecutor();
        Future<String> future = threadPool.submit(new MyThread());
        try{
            System.out.println("Waiting thread to finish");
            System.out.println(future.get());
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

class MyThread implements Callable<String>{
    public String call() throws Exception{
        return "Thread Body";
    }
}

相关文章

  • java多线程

    1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用E...

  • java并发编程(一)

    **java多线程编程(一)** 基本实现方式及同步原理 --- 三种实现方式: 1、继承Thr...

  • Java多线程-实例解析

    Java多线程实例 3种实现方法 Java中的多线程有三种实现方式: 1.继承Thread类,重写run方法。Th...

  • java 多线程创建及运行

    java多线程实现方式1.1 三种创建线程的方式 继承Thread类,重写run()方法 实现Runable()接...

  • JAVA多线程实现的三种方式

    JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService...

  • java并发编程(一)

    java多线程编程(一) 三种实现方式: 1、继承Thread 2、实现Runable 这是Runable的源码所...

  • 面试-实现多线程的方式

    Java中实现多线程的方式有下面三种: 继承Thread类,重写run方法 实现Runnable接口,重写run方...

  • Java实现多线程的三种方式

    1、Java实现多线程主要有三种方式: (1)继承Thread类 (2)实现Runnable接口 (3)使用Exe...

  • java多线程常见面试题

    1.java多线程有哪几种实现方式 三种方式: 1.继承Thread类实现多线成 2.实现Runnable接口 3...

  • Java多线程实现

    导语 Java是一门为数不多的多线程支持的编程语言。 主要内容 掌握Java中三种多线程的实现方式 具体内容 如果...

网友评论

      本文标题:Java实现多线程的三种方式

      本文链接:https://www.haomeiwen.com/subject/nxtxeftx.html