import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolTest {
public static void main(String[] args) {
//固定线程池,作用:类似一个非常小的服务器。
//ExecutorService threadPool = Executors.newFixedThreadPool(3);
//缓存线程池,作用:有多少个任务就创建多少个线程池。
//ExecutorService threadPool = Executors.newCachedThreadPool();
//单个线程池,作用:实现线程死掉后重新创建一个线程池。
ExecutorService threadPool = Executors.newSingleThreadExecutor();
for(int i=1; i<=5; i++){
final int rw = i;
threadPool.execute(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int y=1; y<=10; y++){
System.out.println("执行第 "+rw+" 个任务"+"====循环到底"+y+"次");
}
}
});
}
threadPool.shutdown();//任务完成了线程就停止
//threadPool.shutdownNow();//任务执行中就停止线程
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = "2018-01-31 21:51:59";
Date date;
try {
date = format.parse(time);
Executors.newScheduledThreadPool(1).schedule(new Runnable() {
@Override
public void run() {
System.out.println("今天晚上:21:51:59 点爆炸!");
}
//用设定的时间-当前系统的时间,就能规定在某天某点执行。
}, (date.getTime()-System.currentTimeMillis())/1000, TimeUnit.SECONDS);
} catch (ParseException e) {
e.printStackTrace();
}
//做一个闹钟,40分钟之后闹一次,之后每隔5分钟提醒一次。
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("40分钟之后闹一次,之后每隔5分钟提醒一次!");
}
}, 40, 5, TimeUnit.MINUTES);
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolTest {
public static void main(String[] args) {
//固定线程池,作用:类似一个非常小的服务器。
//ExecutorService threadPool = Executors.newFixedThreadPool(3);
//缓存线程池,作用:有多少个任务就创建多少个线程池。
//ExecutorService threadPool = Executors.newCachedThreadPool();
//单个线程池,作用:实现线程死掉后重新创建一个线程池。
ExecutorService threadPool = Executors.newSingleThreadExecutor();
for(int i=1; i<=5; i++){
final int rw = i;
threadPool.execute(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int y=1; y<=10; y++){
System.out.println("执行第 "+rw+" 个任务"+"====循环到底"+y+"次");
}
}
});
}
threadPool.shutdown();//任务完成了线程就停止
//threadPool.shutdownNow();//任务执行中就停止线程
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = "2018-01-31 21:51:59";
Date date;
try {
date = format.parse(time);
Executors.newScheduledThreadPool(1).schedule(new Runnable() {
@Override
public void run() {
System.out.println("今天晚上:21:51:59 点爆炸!");
}
//用设定的时间-当前系统的时间,就能规定在某天某点执行。
}, (date.getTime()-System.currentTimeMillis())/1000, TimeUnit.SECONDS);
} catch (ParseException e) {
e.printStackTrace();
}
//做一个闹钟,40分钟之后闹一次,之后每隔5分钟提醒一次。
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("40分钟之后闹一次,之后每隔5分钟提醒一次!");
}
}, 40, 5, TimeUnit.MINUTES);
}
}