29.实现范例的主类,创建Main主类,并实现main()方法。
public class Main{
public static void main(String[] args) {
30.创建Document对象,包含100行,每行1,000个词。
DocumentMock mock=new DocumentMock();
String[][] document=mock.generateDocument(100, 1000, "the");
31.创建一个DocumentTask对象,用来更新整个文档。传递数字0给参数start,以及数字100给参数end。
DocumentTask task=new DocumentTask(document, 0, 100, "the");
32.采用无参的构造器创建一个ForkJoinPool对象,然后调用execute()方法程池里执行这个任务。
ForkJoinPool pool=new ForkJoinPool();
pool.execute(task);
33.实现代码块,显示线程池的进展信息,每秒钟在控制台输出线程池的一些参数,直到任务执行结束。
do {
System.out.printf("******************************************\n");
System.out.printf("Main: Parallelism: %d\n",pool.getParallelism());
System.out.printf("Main: Active Threads: %d\n",pool.getActiveThreadCount());
System.out.printf("Main: Task Count: %d\n",pool.getQueuedTaskCount());
System.out.printf("Main: Steal Count: %d\n",pool.getStealCount());
System.out.printf("******************************************\n");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (!task.isDone());
34.调用shutdown()方法关闭线程池。
pool.shutdown();
35.调用awaitTermination()等待任务执行结束。
try {
pool.awaitTermination(1, TimeUnit.DAYS);
} catch (InterruptedException e) {
e.printStackTrace();
}
36.在控制台输出文档中出现要查找的词的次数。检验这个数字与DocumentMock类输出的数字是否一致。
try {
System.out.printf("Main: The word appears %d in the document",task.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40557-10.html
美舰根本进不了12海里
美国军舰是在12海里