Heim > Java > javaLernprogramm > Hauptteil

Java-Implementierung der ausführbaren Multithread-Ausnahmeerfassung

黄舟
Freigeben: 2017-10-16 09:52:37
Original
1523 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich relevante Informationen zur Implementierung von Runnable mit mehreren Threads vorgestellt. Ich hoffe, dass dieser Artikel jedem helfen kann, dieses Wissen zu verstehen und zu beherrschen.

Detaillierte Erläuterung der Implementierung des Multithread-Ausnahmeabfangs Runnable in Java

1. Hintergrund:

                  Java-Multithread-Ausnahmen werden nicht an den Hauptthread geworfen. Sie werden extern von selbst behandelt. Die Ausnahme kann nicht abgefangen werden. Daher ist es notwendig, die Erfassung von Sub-Thread-Ausnahmen durch den Haupt-Thread zu realisieren.
2. Tools:

Implementieren Sie die LayerInitTask-Klasse der Runnable-Schnittstelle, ThreadException-Klasse, Thread-sicheres Vector

Übergabe an LayerInitTask Geben Sie den Vektor ein, zeichnen Sie Ausnahmen auf, durchlaufen Sie ihn extern, beurteilen Sie und lösen Sie Ausnahmen aus.


4. Code: 



package step5.exception; 
 
import java.util.Vector; 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.TimeUnit; 
 
import com.autonavi.pds.core.incre.impl.LayerInitTask; 
 
public class ThreadException { 
 
  public static void main(String[] args) { 
    try { 
      Vector<String> errRet = new Vector(); 
      ExecutorService pool = Executors.newFixedThreadPool(6); 
      for (int i = 0; i < 6; ++i) { 
        pool.execute(new LayerInitTask(i, errRet)); 
      } 
      pool.shutdown(); 
      pool.awaitTermination(1, TimeUnit.DAYS); 
       
      if (errRet.size() > 0) { 
        System.out.println("根据返回值捕获:exception"); 
        throw new RuntimeException( "入库失败!"); 
      } 
       
    } catch (Exception e) { 
      System.out.println("根据抛出异常捕获:exception"); 
      throw new RuntimeException( "入库失败!"); 
    } 
    System.out.println("-----入库成功,发成功完成工作邮件--------"); 
  } 
 
}
Nach dem Login kopieren


package step5.exception; 
 
import java.util.Vector; 
 
public class LayerInitTask implements Runnable { 
  private int threadNum; 
  private Vector<String> errRet; 
 
  public LayerInitTask(int num, Vector<String> errRet) { 
    this.threadNum = num; 
    this.errRet = errRet; 
  } 
 
  @Override 
  public void run() { 
    try { 
      if (this.threadNum == 3) { 
        throw new RuntimeException( this.threadNum + ":数据格式有误."); 
      } 
      System.out.println(this.threadNum + ":刷表成功"); 
    } catch (Exception e) { 
      this.errRet.add("线程:" + this.threadNum + "运行异常!"); 
      throw new RuntimeException( this.threadNum + ":刷表失败"); 
    } 
  } 
 
}
Nach dem Login kopieren
5.



Das obige ist der detaillierte Inhalt vonJava-Implementierung der ausführbaren Multithread-Ausnahmeerfassung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage