您的位置:首页 > 编程语言 > Java开发

Java并发编程之线程管理(Executor框架15)

2014-03-30 23:21 573 查看

4.5指定一段时间运行并发任务

当你发送一个任务给指定的executor时,它依据executor的配置来迅速被运行。当你对线程的运行不太感兴趣,只需要它快速的运行就可以了,这就是它的使用场合。当你想间歇地执行一个任务或者定期地执行一个任务。对于这些目的,Executor框架提供了一个ScheduledThreadPoolExecutor类。请看下面实例实例代码。

定义Task类,实现一个简单的逻辑。

 
import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
importjava.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
* This class implements the task ofthis example. Writes a
* message to the console with theactual date and returns the
* 'Hello, world' string
*
*/
public class Task implements Callable<String> {

/**
* Name of the task
*/
private Stringname;

/**
* Constructor of the class
* @param name Name of the task
*/
public Task(String name) {
this.name=name;
}

/**
* Main method of the task. Writes a message tothe console with
* the actual date and returns the 'Helloworld' string
*/
@Override
public String call()throws Exception {
System.out.printf("%s: Starting at : %s\n",name,new Date());
return"Hello, world";
}

/**
* Main method of the example
* @param args
*/
public staticvoidmain(String[] args) {

// Create a ScheduledThreadPoolExecutor
ScheduledExecutorService executor=(ScheduledExecutorService)Executors.newScheduledThreadPool(1);

System.out.printf("Main: Starting at: %s\n",new Date());

// Send the tasks to the executor with the specified delay
for (int i=0; i<5; i++) {
Task task=new Task("Task "+i);
executor.schedule(task,i+1 ,TimeUnit.SECONDS);
}

// Finish the executor
executor.shutdown();

// Waits for the finalization of the executor
try {
executor.awaitTermination(1,TimeUnit.DAYS);
} catch (InterruptedException e) {
e.printStackTrace();
}

// Writes the finalization message
System.out.printf("Core: Ends at: %s\n",new Date());
}
}


运行结果:

Main:Starting at: Sun Mar 30 23:03:12 CST 2014
Task0: Starting at : Sun Mar 30 23:03:13 CST 2014
Task1: Starting at : Sun Mar 30 23:03:14 CST 2014
Task2: Starting at : Sun Mar 30 23:03:15 CST 2014
Task3: Starting at : Sun Mar 30 23:03:16 CST 2014
Task4: Starting at : Sun Mar 30 23:03:17 CST 2014
Core:Ends at: Sun Mar 30 23:03:17 CST 2014
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: