多线程按照顺序执行

 1 package cn.hutool.core;
 2 
 3 import java.util.ArrayList;
 4 import java.util.LinkedList;
 5 import java.util.List;
 6 import java.util.concurrent.ExecutionException;
 7 import java.util.concurrent.ExecutorService;
 8 import java.util.concurrent.Executors;
 9 import java.util.concurrent.Future;
10 
11 public class TestDemo {
12     public static void main(String[] args) {
13         Runnable runnable1 = new Runnable() {
14             @Override
15             public void run() {
16                 System.out.println("1111````1111111");
17                 try {
18                     Thread.sleep(5000);
19                 } catch (InterruptedException e) {
20                     e.printStackTrace();
21                 }
22                 System.out.println("1111111111111111111111");
23             }
24         };
25         Runnable runnable2 = new Runnable() {
26             @Override
27             public void run() {
28                 System.out.println("2222````222222");
29                 try {
30                     Thread.sleep(3000);
31                 } catch (InterruptedException e) {
32                     e.printStackTrace();
33                 }
34                 System.out.println("2222222222222222222222");
35             }
36         };
37         Runnable runnable3 = new Runnable() {
38             @Override
39             public void run() {
40                 System.out.println("33333````333333");
41                 try {
42                     Thread.sleep(10000);
43                 } catch (InterruptedException e) {
44                     e.printStackTrace();
45                 }
46                 System.out.println("3333333333333333333333");
47             }
48         };
49         Runnable runnable4 = new Runnable() {
50             @Override
51             public void run() {
52                 System.out.println("444444````444444");
53                 try {
54                     Thread.sleep(5);
55                 } catch (InterruptedException e) {
56                     e.printStackTrace();
57                 }
58                 System.out.println("444444444444444444444");
59             }
60         };
61         Runnable runnable5 = new Runnable() {
62             @Override
63             public void run() {
64                 System.out.println("5555555````5555555555");
65                 try {
66                     Thread.sleep(3);
67                 } catch (InterruptedException e) {
68                     e.printStackTrace();
69                 }
70                 System.out.println("5555555555555555555555");
71             }
72         };
73         List<Future> results = new ArrayList<>();
74         ExecutorService es = Executors.newCachedThreadPool();
75         results.add(es.submit(runnable1));
76         results.add(es.submit(runnable2));
77         results.add(es.submit(runnable3));
78         for (Future result : results) {
79             try {
80                 result.get();
81             } catch (InterruptedException e) {
82                 e.printStackTrace();
83             } catch (ExecutionException e) {
84                 e.printStackTrace();
85             }
86         }
87         Thread thread4 = new Thread(runnable4);
88         Thread thread5 = new Thread(runnable5);
89         thread4.start();
90         thread5.start();
91         es.shutdown();
92     }
93 }

 

上一篇:线程池与Future


下一篇:Java多线程详解