码迷,mamicode.com
首页 > 编程语言 > 详细

线程的三种实现方法

时间:2018-11-10 23:56:15      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:info   adp   style   run   str   png   完成   image   out   

线程的三种实现方法:
(1)继承 Thread 类,重写run()方法;

(2)实现 Runnable 接口,重写run() 方法;

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

方式一:  继承Thread类

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

class MyThread extends Thread
{
    @Override
    public void run()
    {
        System.out.println("extends Thread");
    }
}

方式二: 实现 Runnable 接口

public class MyRunnableDemo
{
    public static void main(String[] args)
    {
        //方法一
        Thread thread = new Thread(new MyRunnable());
        thread.start(); //启动线程

        //方法二 匿名类
        Thread thread1 = new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                System.out.println("anonymous class implement Runnable");
            }
        });
        thread1.start(); //启动线程
    }
}

class MyRunnable implements Runnable
{

    @Override
    public void run()
    {
        System.out.println("implement Runnable");
    }
}

方式三: 实现 Callable 接口

Callable 的 call() 方法会返回执行结果,抛出异常;

ExecutorService :线程池的接口;

Executors: 线程池的工具类

 

public class MyCallableDemo
{
    public static void main(String[] args) throws ExecutionException, InterruptedException
    {
        //方法一  使用线程池方式
        ExecutorService executorService = Executors.newFixedThreadPool(2);
        Future future = executorService.submit(new MyCallable());
        future.isDone();      //return true,false 无阻塞
        System.out.println(future.get());    // return 返回值,阻塞直到该线程运行结束

        //方法二
        FutureTask futureTask = new FutureTask(new MyCallable());
        Thread thread = new Thread(futureTask);
        thread.start();
        System.out.println(futureTask.get());
    }
}

class MyCallable implements Callable
{
    @Override
    public String call() throws Exception
    {
        System.out.println(Thread.currentThread().getName() + ": 执行 Call 方法");
        return Thread.currentThread().getName() + "线程运行完成";
    }
}

运行结果: 

  技术分享图片

 

FutureTask 类实现了 Runnable 接口

技术分享图片

 

线程的三种实现方法

标签:info   adp   style   run   str   png   完成   image   out   

原文地址:https://www.cnblogs.com/yufeng218/p/9940909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!