线程池实现线程的创建 的两种方法

package cn.itcast.demo5;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/*

  • JDK1.5新特性,实现线程池程序
  • 使用工厂类 Executors中的静态方法创建线程对象,指定线程的个数
  • static ExecutorService newFixedThreadPool(int 个数) 返回线程池对象
  • 返回的是ExecutorService接口的实现类 (线程池对象)
  • 接口实现类对象,调用方法submit (Ruunable r) 提交线程执行任务

*/
public class ThreadPoolDemo {
public static void main(String[] args) {
//调用工厂类的静态方法,创建线程池对象
//返回线程池对象,是返回的接口
ExecutorService es = Executors.newFixedThreadPool(2);
//调用接口实现类对象es中的方法submit提交线程任务
//将Runnable接口实现类对象,传递
es.submit(new ThreadPoolRunnable());
es.submit(new ThreadPoolRunnable());
es.submit(new ThreadPoolRunnable());

}

}

//第一种方法,实现接口Runable,重写run方法

package cn.itcast.demo5;

public class ThreadPoolRunnable implements Runnable {
public void run(){
System.out.println(Thread.currentThread().getName()+" 线程提交任务");
}
}

  •                                                           *二**
    

package cn.itcast.demo5;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/*

  • 实现线程程序的第三个方式,实现Callable接口方式
  • 实现步骤
  • 工厂类 Executors静态方法newFixedThreadPool方法,创建线程池对象
  • 线程池对象ExecutorService接口实现类,调用方法submit提交线程任务
  • submit(Callable c)
    */
    public class ThreadPoolDemo1 {
    public static void main(String[] args)throws Exception {
    ExecutorService es = Executors.newFixedThreadPool(2);
    //提交线程任务的方法submit方法返回 Future接口的实现类
    Future f = es.submit(new ThreadPoolCallable());
    String s = f.get();
    System.out.println(s);
    }
    }

第三种 * Callable 接口的实现类,作为线程提交任务出现
package cn.itcast.demo5;
/

  • Callable 接口的实现类,作为线程提交任务出现
  • 使用方法返回值
    */

import java.util.concurrent.Callable;

public class ThreadPoolCallable implements Callable{
public String call(){
return “abc”;
}
}
**

猜你喜欢

转载自blog.csdn.net/weixin_43308935/article/details/84642046