[Java] java 线程意外结束后自动生成新线程 →→→→→进入此内容的聊天室

来自 , 2020-08-12, 写在 Java, 查看 109 次.
URL http://www.code666.cn/view/d79aac07
  1. public class ThreadForever {
  2.  
  3.     @Test
  4.     public void demo() {
  5.         ExecutorService service = Executors.newFixedThreadPool(3);
  6.  
  7.         // 如果是仅仅一个线程,就用Future 就够了,不需要CompletionService
  8.         CompletionService<Boolean> completion = new ExecutorCompletionService<Boolean>(service);
  9.  
  10.         completion.submit(new Work());
  11.  
  12.         // 此段可以启用一个新的线程单独执行,防止阻塞主线程
  13.         while (true) {
  14.             try {
  15.                 System.out.println("Success:" + completion.take().get());
  16.                 break;
  17.             }
  18.             catch (Exception e) {
  19.                 // 运行过程中出现了异常
  20.                 e.printStackTrace();
  21.                 completion.submit(new Work());
  22.             }
  23.         }
  24.  
  25.         service.shutdown();
  26.     }
  27.  
  28.     class Work implements Callable<Boolean> {
  29.  
  30.         @Override
  31.         public Boolean call() throws Exception {
  32.             for (int i = 0; i < 5; i++) {
  33.                 System.out.println(Thread.currentThread().getName() + "->" + i);
  34.                  
  35. //                try {
  36. //                    Thread.sleep(100);
  37. //                } catch (InterruptedException e) {
  38. //                    e.printStackTrace();
  39. //                }
  40.  
  41.                 // 抛出异常,使线程中断
  42.                 if (i % 3 == 1) {
  43.                     @SuppressWarnings("unused")
  44.                     int e = 1 / 0;
  45.                 }
  46.             }
  47.  
  48.             return true;
  49.         }
  50.     }
  51. }

回复 "java 线程意外结束后自动生成新线程"

这儿你可以回复上面这条便签

captcha