区别:::ScheduledExecutorService,执行任务方法为schedule,而不是submit;
es.schedule(new MyRunnable(i),2, TimeUnit.SECONDS);
指定线程了线程数量,具有了延迟的能力
public class ScheduledExecutorServiceTest01 {
public static void main(String[] args) {
ScheduledExecutorService es= Executors.newScheduledThreadPool(3);
for (int i = 0; i < 10; i++) {
es.schedule(new MyRunnable(i),2, TimeUnit.SECONDS);
}
System.out.println("end---------");
}
static class MyRunnable implements Runnable{
private int id;
public MyRunnable(int id) {
this.id = id;
}
@Override
public void run() {
String name=Thread.currentThread().getName();
System.out.println(name+"执行了任务"+id);
}
}
}
方法二:定义了线程的数量,具有了延迟的能力,并且创建了线程工程,可以自定义线程;
public class ScheduledExecutorServiceTest02 {
public static void main(String[] args) {
ScheduledExecutorService ses= Executors.newScheduledThreadPool(3, new ThreadFactory() {
int i=1;
@Override
public Thread newThread(Runnable r) {
return new Thread(r,"线程"+i++);
}
});
for (int i = 0; i < 10; i++) {
ses.schedule(new MyRunnable(i),2, TimeUnit.SECONDS);
}
}
static class MyRunnable implements Runnable{
private int id;
public MyRunnable(int id) {
this.id = id;
}
@Override
public void run() {
String name=Thread.currentThread().getName();
System.out.println(name+"执行了任务"+id);
}
}
}
方法三:不去自定义线程数量,也就是单线程,创建对象的时候语句有所不同,(Scheduled怎么去定义单线程????)
ScheduledExecutorService ses= Executors.newSingleThreadScheduledExecutor();
public class ScheduledExecutorServiceTest03 {
static class MyRunnable implements Runnable{
public static void main(String[] args) {
ScheduledExecutorService ses= Executors.newSingleThreadScheduledExecutor();
for (int i = 0; i < 10; i++) {
ses.schedule(new MyRunnable(i),2, TimeUnit.SECONDS);
}
}
private int id;
public MyRunnable(int id) {
this.id = id;
}
@Override
public void run() {
String name=Thread.currentThread().getName();
System.out.println(name+"执行了任务"+id);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)