zoukankan      html  css  js  c++  java
  • java中创建线程的3种方法

    1.继承Thread类
    优点:可以直接使用Thread类中的方法,代码比较简单。
    缺点:继承Thread类之后不能继承其他类。

    2.实现Runable接口
    优点:实现接口,比影响继承其他类或实现接口。
    缺点:

    3.实现Callable接口
    优点:可以获取返回值,可以抛出异常。
    缺点:实现方法相对复杂

    三种方法的实现例

    public static void main(String[] args) throws InterruptedException, ExecutionException {
    //继承Thread类

    /*1.创建Thread类对象。
    * 2.重写run方法,添加在线程中执行的方法。
    * 3.start方法启动线程。
    */

    new Thread() { 

       public void run() 
         {
            for(int i=0;i<100;i++) { System.out.println(" 继承Thread测试"+i); }

          } 

        }.start(); 

    //实现Runnable接口

    /*1.实现Runable接口。
    * 2.重写run方法,添加在线程中执行的方法。
    * 3.创建thread类对象,Runable接口的实现作为参数传入,执行带参数的构造函数。
    * 4.start方法启动线程。
    */

    Runnable ra= new Runnable() {
    @Override
    public void run() { 
       for(int i=0;i<1000;i++)
      {System.out.println("Runnable线程测试 "+i);}
       }
    };
    Thread thread = new Thread(ra); 
    thread.start(); 


    //Callable

    /*1.创建线程池。
    * 2.现实Callable接口。
    * 3.重写Call方法,添加在线程中执行的方法。
    * 4.把Callable的实现放到线程池中。并获得线程池返回的Future对象。
    */
    ExecutorService es = Executors.newFixedThreadPool(3);
    Callable<Integer> ca=new Callable<Integer>()
      {
       @Override
       public Integer call() throws Exception {
       return 100;
       }
    };
    Future<Integer> ft =es.submit(ca); 
    System.out.println(ft.get());
    es.shutdown();

    }
    }

  • 相关阅读:
    窗体吸附 Timer + 判断Location (简单实用)
    C# FTP 应用程序
    C# 加密方法汇总
    LINQ 标准的查询操作符 合计操作符 Count()、Sum()、Min()、Max()、Average()和Aggregate()
    委托中的协变和逆变(C# 编程指南)
    深入探讨C#序列化和反序列化
    grep 命令详解
    Oracle 数据库的启动和关闭的方式!
    linux 下的光盘拷贝
    C3P0连接池配置
  • 原文地址:https://www.cnblogs.com/HappyBeibei/p/11072801.html
Copyright © 2011-2022 走看看