ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何应用多线程

2020-12-14 17:01:23  阅读:181  来源: 互联网

标签:run Thread 如何 MyThread 线程 应用 多线程 public


在 Java 中,有多种方式来实现多线程。继承 Thread 类、实现 Runnable 接

口、使用 ExecutorService、Callable、Future 实现带返回结果的多线程。

继承Thread 

Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。

启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个

native 方法,它会启动一个新线程,并执行 run()方法。这种方式实现多线程很

简单,通过自己的类直接 extend Thread,并复写 run()方法,就可以启动新线

程并执行自己定义的 run()方法。


/**
 * @auther: tianweichang
 * @date: 2018/8/28 20
 * @Description: 继承Thread
 */
public class MyThread extends Thread {
public void run() {
        System.out.println("MyThread.run()");
    }

public static void main(String[] args) {
        MyThread myThread1 = new MyThread();
        MyThread myThread2 = new MyThread();
        myThread1.start();
        myThread2.start();
    }
}

实现Runnable 

java单线程的问题,如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现一个 Runnable 接口



实现Callable接口通过FutureTask包装器来创建

Thread  线程

有的时候,我们可能需要让一步执行的线程在执行完成以后,提供一个返回值

给到当前的主线程,主线程需要依赖这个值进行后续的逻辑处理,那么这个时

候,就需要用到带返回值的线程了。Java 中提供了这样的实现方式

/**
 * @auther: tianweichang
 * @date: 2018/8/28 20
 * @Description: 实现Callable创建线程
 */
public class MyCallable implements Callable<String> {
public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        MyCallable callableDemo = new MyCallable();
        Future<String> future = executorService.submit(callableDemo);
        System.out.println("返回值:" + future.get());//get是阻塞的
        executorService.shutdown();
    }

@Override
    public String call() throws Exception {
//do your business
        int a = 1;
        int b = 2;
        System.out.println(a + b);
        return "执行结果:" + (a + b);
    }
}




标签:run,Thread,如何,MyThread,线程,应用,多线程,public
来源: https://blog.51cto.com/10983206/2564044

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有