美文网首页
JAVA多线程

JAVA多线程

作者: eliter0609 | 来源:发表于2017-06-10 23:15 被阅读0次

1.多线程的四种实现方式

1)继承Thread类

public static void main(String[] args) {
    MyThread myThread1 = new MyThread();
    MyThread myThread2 = new MyThread();
    myThread1.start();
    myThread2.start();
}
class MyThread extends Thread {
public void run() {
    System.out.println("MyThread.run()");
    }
}

2)实现Runnable接口

new Thread(new Runnable() {         
        @Override
        public void run() {
            while(true){
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    
                    e.printStackTrace();
                }
                output.output("zhangxiaoxiang");
            }
            
        }
    }).start();

3)实现Callable接口

public static void main(String[] args){
    ExecutorService executorService=Executors.newFixedThreadPool(3);
    try{
        Future<String> future=executorService.submit(new MyCallable());
        System.out.println(future.get());
    }catch(Exception e){
        System.out.println(e.getMessage());
    }
   }

class MyCallable implements Callable<String>{

@Override
public String call() throws Exception {
    Thread.sleep(5000);
    return "hello";
   }    
}

4)通过FutureTask包装器

 public static void main(String[] args) {  //         //创建线程池  
//  ExecutorService es = Executors.newSingleThreadExecutor();  
//        //创建Callable对象任务  
//        CallableDemo calTask=new CallableDemo();  
//        //提交任务并获取执行结果  
//        Future<Integer> future =es.submit(calTask);  
//        //关闭线程池  
//        es.shutdown();  
          
        //创建线程池  
        ExecutorService es = Executors.newSingleThreadExecutor();  
        //创建Callable对象任务  
        CallableDemo calTask=new CallableDemo();  
        //创建FutureTask  
        FutureTask<Integer> futureTask=new FutureTask<>(calTask);  
        //执行任务  
        es.submit(futureTask);  
        //关闭线程池  
        es.shutdown();  
        try {  
            Thread.sleep(2000);  
        System.out.println("主线程在执行其他任务");  
          
        if(futureTask.get()!=null){  
            //输出获取到的结果  
            System.out.println("futureTask.get()-->"+futureTask.get());  
        }else{  
            //输出获取到的结果  
            System.out.println("futureTask.get()未获取到结果");  
        }  
          
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        System.out.println("主线程在执行完成");  
    }  
}  

相关文章

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • Java基础(六)

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

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

网友评论

      本文标题:JAVA多线程

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