美文网首页Java工作生活
java多线程的4种实现方式

java多线程的4种实现方式

作者: 问题_解决_分享_讨论_最优 | 来源:发表于2019-10-30 02:38 被阅读0次

1,继承Thread类,重写run方法;

public class Thread01 extends Thread{

    public Thread01(){

    }

    public void run(){ 

        System.out.println(Thread.currentThread().getName());

    }

    public static void main(String[] args){

        Thread01 thread01 = new Thread01();

        thread01.setName("继承Thread类的线程1");

        thread01.start();     

        System.out.println(Thread.currentThread().toString()); 

    }

}

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

public class Thread02 {

    public static void main(String[] args){

        System.out.println(Thread.currentThread().getName());

        Thread t2 = new Thread(new MyThread02());

        t2.start();

    }

}

class MyThread02 implements Runnable{

    @Override

    public void run() {

        System.out.println(Thread.currentThread().getName()+"2--实现Runnable接口的线程实现方式");

    } 

}

3,实现Callable接口通过FutureTask包装器来创建Thread线程;

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

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

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

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

public class CallableThreadTest implements Callable<Integer> { public static void main(String[] args)

    { 

        CallableThreadTest ctt = new CallableThreadTest(); 

        FutureTask<Integer> ft = new FutureTask<>(ctt); 

        for(int i = 0;i < 100;i++) 

        { 

            System.out.println(Thread.currentThread().getName()+" 的循环变量i的值"+i); 

            if(i==20) 

            { 

                new Thread(ft,"有返回值的线程").start(); 

            } 

        } 

        try 

        { 

            System.out.println("子线程的返回值:"+ft.get()); 

        } catch (InterruptedException e) 

        { 

            e.printStackTrace(); 

        } catch (ExecutionException e) 

        { 

            e.printStackTrace(); 

        } 

    }    @Override 

    public Integer call() throws Exception 

    { 

        int i = 0; 

        for(;i<100;i++) 

        { 

            System.out.println(Thread.currentThread().getName()+" "+i); 

        } 

        return i; 

    }  }

4,通过线程池创建线程;

public class Thread04 {

    private static int POOL_NUM =10;

    public static void main(String[] args)throws InterruptedException {

        ExecutorService executorService = Executors.newFixedThreadPool(5);

        for (int i = 0; i < POOL_NUM; i++) {

            RunnableThread  runnable =new  RunnableThread ();           

            executorService.execute(runnable);

        }

        executorService.shutdown();

    }

}

class RunnableThread  implements Runnable{   

    @Override

    public void run() 

    { 

          System.out.println("4--通过线程池创建的线程:" + Thread.currentThread().getName() + " ");

    } 

}

打个广告,本人博客地址是:风吟个人博客

相关文章

  • java多线程

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

  • Q&A-04 多线程&分布式

    1、Java实现多线程有哪几种方式 Java 多线程实现方式主要有四种: 继承Thread类 实现Runnable...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • 多线程(最全面试题04)

    Java实现线程有哪几种方式?1、继承Thread类实现多线程2、实现Runnable接口方式实现多线程3、使用E...

  • 多线程经典面试题及答案

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

  • Java中的多线程实现方式

    Java中的多线程实现方式 在我们的开发的过程中,常常会碰到多线程的问题,对于多线程的实现方式主要有两种:实现Ru...

  • Java多线程知识点

    1.java中实现多线程的几种方式 java中实现多线程的方式主要有两种,第一种是继承Thread类,第二种是实现...

  • Thread,Runnable和Callable

    Java多线程实现方式:Thread,Runnable,Callable多线程是乱序执行Thread===1.Th...

  • Java多线程-实例解析

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

  • java并发编程(一)

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

网友评论

    本文标题:java多线程的4种实现方式

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