码迷,mamicode.com
首页 > 编程语言 > 详细

Java线程2

时间:2019-02-14 09:15:56      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:方法   方式   rmi   lock   int   false   generate   executors   rgs   

Java线程2
为了提高系统处理的效率,除了其他方法外,增加了多线程的方式。对于增加的线程而言,线程本身也是需要管理了,这就出现了线程池,线程池就是用来管理线程的。对于java来说,提供了一些线程池的管理:
1、Executors.newCachedThreadPool()缓存线程池
2、Executors.newFixedThreadPool(param)固定大小的线程池
3、Executors.newScheduledThreadPool(param);定时的线程池
4、Executors.newSingleThreadExecutor();顺序执行的线程池
5、Executors.newSingleThreadScheduledExecutor();顺序执行的定时的线程池

Executors是一个工厂类,可以调用他来创建各种线程池,
ExecutorService是线程池的接口,通过这个可以调用
submit(Runnable runn);将线程加入到线程池中,按照一定的规则来执行添加的线程,返回值为Future<?>
submit(Callable<T> call);返回值为Future<T>
shutdown();调用这个方法后,就不能在向线程池中添加线程或者是任务,等待加入到线程池中的线程执行完。
isShutdown();没有调用shutdown()时是false,调用后是true
isTerminated();调用shutdown()后,并且所有的线程执行完,则是true,否则是false
以缓存线程为例:
package cn.com.theadpool;
import java.util.Random;
public class WorkTask implements Runnable {
private int index;
public WorkTask(int index){
this.index = index;br/>}
@Override
public void run() {
// TODO Auto-generated method stub
Random random = new Random();
int ra = random.nextInt(10000);
try {
Thread.sleep(ra);
System.out.println(index);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

package cn.com.theadpool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService es = Executors.newCachedThreadPool();
for(int i=0;i<10;i++) {
es.submit(new WorkTask(i));
}
}
}

Timer和TimerTask的关系相当于Thread和Runnable的关系,但是有不同之处。
TimerTask的创建需要实现run()方法,这个方法中的业务就是要定时执行的任务。
而Timer中的方法schedule就是设置TimerTask并且设置执行的时间和每隔多久执行的设置。

Java线程2

标签:方法   方式   rmi   lock   int   false   generate   executors   rgs   

原文地址:http://blog.51cto.com/xiaoshunzi/2349960

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!