创建线程有几种方式和Java中常用的线程池
2017-11-23 17:00
399 查看
创建线程有几种方式
创建线程有三种方式:
a:
extends Thread
class ThreadOne entends Thread{
@Override
public void run(){
......
}
}
需要创建该线程的位置:
b:
c:
第三种实现Callable接口的方式弥补了原本Runnable接口当中run()的两个不足
a: run()方法定义为void方法 所以无法返回结果
b: 方法没有throws声明所以没法抛出异常
另外这种方式必须结合线程池执行器服务 利用submit将任务提交给执行器
如果需要返回的数据 可以得到提交任务后返回的Future对象 然后调用自我阻塞的get()方法[这个方法会
导致当前线程阻塞]
最后结束执行器的时候需要调用shutdown()或者shutdownNow()...
Java当中常用的线程池:
//可重用的线程池 其中参数代表预留多少活跃线程
ExecutorService es = Executors.newFixedThreadPool(3);
//带缓存机制的线程池 也就是在任务执行结束60秒内线程不消亡
ExecutorService es = Executors.newCachedThreadPool();
//单一实例的线程执行器
ExecutorService es = Executors.newSingleThreadExecutor();
创建线程有三种方式:
a:
extends Thread
class ThreadOne entends Thread{
@Override
public void run(){
......
}
}
需要创建该线程的位置:
ThreadOne t1 = new ThreadOne(); t1.start();
b:
implements Runnable(国产汽车进口发动机) class ThreadTwo implements Runnable{ @Override public void run(){ ...... } } 需要创建该线程的位置: ThreadTwo t = new ThreadTwo(); Thread t2 = new Thread(t); //将定义的线程作为参数传入得到线程 t2.start();
c:
implements Callable<String>---必须结合线程池执行器服务来实现 class ThreadThree implements Callable<String>{ @Override public String call()throws Exception{ ...... return "over"; } } 然后需要创建线程池执行器服务并提交任务 ExecutorService es = Executors.newFixedThreadPool(6);//可重用的线程池 Executors.newCachedThreadPool();//缓存机制的线程池 Executors.newSingleExecutor();//单一实例的线程执行器 Future<String> f = es.submit(new ThreadThree()); //然后视需求决定是否调用自我阻塞办法get()来得到返回结果 String ok = f.get();
第三种实现Callable接口的方式弥补了原本Runnable接口当中run()的两个不足
a: run()方法定义为void方法 所以无法返回结果
b: 方法没有throws声明所以没法抛出异常
另外这种方式必须结合线程池执行器服务 利用submit将任务提交给执行器
如果需要返回的数据 可以得到提交任务后返回的Future对象 然后调用自我阻塞的get()方法[这个方法会
导致当前线程阻塞]
最后结束执行器的时候需要调用shutdown()或者shutdownNow()...
Java当中常用的线程池:
//可重用的线程池 其中参数代表预留多少活跃线程
ExecutorService es = Executors.newFixedThreadPool(3);
//带缓存机制的线程池 也就是在任务执行结束60秒内线程不消亡
ExecutorService es = Executors.newCachedThreadPool();
//单一实例的线程执行器
ExecutorService es = Executors.newSingleThreadExecutor();
相关文章推荐
- java创建线程的几种方式
- java 创建线程的几种方式
- Java多线程编程小结+java中创建线程的的几种方式
- java多线程与并发之创建线程的几种方式
- Java中创建线程的几种方式以及线程同步的几种方式
- Java创建线程的几种方式
- [面试]java创建线程有几种方式?
- Java复习:创建线程的的几种方式
- Java基础:多线程(1)--线程的概述、创建线程的方式、线程的多种状态、线程常用的方法
- java多线程之线程创建的几种方式
- java中创建线程的的几种方式
- java中创建线程的的几种方式
- java多线程总结一:线程的两种创建方式及优劣比较
- java多线程总结一:线程的两种创建方式及优劣比较
- 【java多线程与并发库】---传统java多线程<2> 线程创建方式
- java 中线程的创建方式,及对线程的个人理解
- 黑马程序员_java创建线程的两种方式
- 从设计的角度讨论Java中线程的两种创建方式
- Java创建与获得对象的几种方式
- java#2 线程的两种创建方式