java线程实现的四种方式

  java多线程的实现可以通过以下四种方式

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

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

    3.通过Callable和FutureTask创建线程

    4.通过线程池创建线程

  方式1,2不再赘述.

  方式3,通过Callable和FutureTask创建线程实现多线程

    @Test
    public void MyCallableTest() throws Exception {
        //创建线程执行对象
        MyCallable myCallable = new MyCallable();
        FutureTask<String> futureTask = new FutureTask<>(myCallable);
        //执行线程
        Thread thread = new Thread(futureTask);
        thread.start();
        //获取线程方法返回数据
        System.out.println(futureTask.get());
    }
    /**
     * 创建实现类
     */
    class MyCallable implements Callable<String>{
        @Override
        public String call() throws Exception {
            System.out.println("test thread by callable");
            return "result";
        }
    }

  方式4,通过线程池创建线程

public class ThreadPoolStu {

    @Test
    public void TestThreadPool1() throws InterruptedException, ExecutionException {
        ExecutorService executorService = Executors.newFixedThreadPool(2);

        //执行Runnable接口实现类 方式1
        MyRunnable runnable1 = new MyRunnable();
        executorService.execute(runnable1);

        //执行Runnable接口实现类 方式2
        MyRunnable runnable2 = new MyRunnable();
        Future<?> future2 = executorService.submit(runnable2);
        System.out.println(future2.get());//若未执行完会阻塞该线程

        //执行Callable接口实现类
        MyCallable callable3 = new MyCallable();
        Future<String> future3 = executorService.submit(callable3);
        System.out.println(future3.get());//若未执行完会阻塞该线程

        // 关闭线程池
        executorService.shutdown();
    }

}
class MyCallable implements Callable<String>{
    @Override
    public String call() throws Exception {
        System.out.println("test thread by callable");
        return "result";
    }
}
class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("thread execute");
    }
}

原文地址:https://www.cnblogs.com/codeLei/p/9070634.html

时间: 2024-08-04 23:38:00

java线程实现的四种方式的相关文章

java解析xml文件四种方式介绍、性能比较和基本使用方法

一.介绍: 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不

Java线程池的四种创建方式

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待. newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行. newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保

Java Array数组 遍历 四种方式(包含 Lambda 表达式遍历)

package com.hello; import java.util.Arrays; /** * @Author Miracle Luna * @Date 2019/6/9 23:33 * @Version 1.0 */public class ArrayLambda { public static void main(String[] args) { Integer[] items = { 1, 2, 3 }; // 普通for循环遍历 System.out.println("第一种方式:普

Java添加事件的四种方式

Java添加事件的几种方式(转载了codebrother的文章,做了稍微的改动) 1 /** 2 * Java事件监听处理--自身类实现ActionListener接口,作为事件监听器 3 * 4 * @author codebrother 5 */ 6 class EventListener1 extends JFrame implements ActionListener { 7 private JButton btBlue, btDialog; 8 9 public EventListen

【转】JAVA多线程实现的四种方式

原文地址:http://www.cnblogs.com/felixzh/p/6036074.html Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Callable.Future实现有返回结果的多线程. 其中前两种方式线程执行完后都没有返回值,后两种是带返回值的. 1.继承Thread类创建线程Thread类本质上是实现了Runnable接口的一个实

JAVA多线程实现的四种方式

Java多线程实现方式主要有四种: 继承Thread类: 实现Runnable接口: 实现Callable接口通过FutureTask包装器来创建Thread线程: 使用接口ExecutorService.Callable.Future实现有返回结果的多线程. 其中前两种方式线程执行完后都没有返回值,后两种是带返回值的. 1.继承Thread类创建线程Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过Thread类的start()实例方法.

Java实现多线程的四种方式

Java多线程实现方式主要有四种: *①继承Thread类. *②实现Runnable接口. *③实现Callable接口通过FutureTask包装器来创建Thread线程. *④使用ExecutorService.Callable.Future实现有返回结果的多线程. 1.继承Thread类创建线程Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过Thread类的start()实例方法.start()方法是一个native方法,它将启动

Java解析xml文件四种方式

1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不是

java调用webservice的四种方式

webservice: 就是应用程序之间跨语言的调用 wwww.webxml.com.cn 1.xml 2.    wsdl: webservice description language web服务描述语言 通过xml格式说明调用的地址方法如何调用,可以看错webservice的说明书 3.soap simple object access protoacl (简单对象访问协议) 限定了xml的格式 soap 在http(因为有请求体,所以必须是post请求)的基础上传输xml数据 请求和响