1. 程式人生 > >多執行緒異常處理

多執行緒異常處理

JAVA 主執行緒中建立子執行緒,子執行緒出現異常,如何處理呢?

線上程內種的run()方法中處理對異常進行try catch 捕獲
程式碼如下,異常類

public class TestThread implements Runnable {
    private static int resultCode = 0;
    @Override
    public void run() {

        try {
            test();
        } catch (Exception e) {
            resultCode = 1;
        }finally
{ System.out.println(resultCode); } } public void test() { Integer divident =10; Integer dividor =null; System.out.println(divident/dividor); } }

Main 類

public class Main {
    public static void main(String[] args) {
        TestThread thread = new
TestThread(); Thread t = new Thread(thread); t.start(); } }

結果:

1

Process finished with exit code 0

補充:如果只是捕捉異常的話,在子執行緒中的錯誤有些事難以撲捉的而且是執行錯誤,導致子執行緒暫停,但是,主執行緒很難監控子執行緒,所以當你的程式碼可能會遇到一些執行錯誤如記憶體溢位時,推薦捕捉Throwable,這是exception的父類,同時也是error的父類,如果業務邏輯不分error和exception的 話,那麼推薦用throwable來丟擲。

相關推薦

c#中的執行異常處理

1.對於Thread操作的異常處理 public static void Main() {   try   {     new Thread (Go).Start();   }   catch (Exception ex)   {     // We'll never ge

執行異常處理

JAVA 主執行緒中建立子執行緒,子執行緒出現異常,如何處理呢? 線上程內種的run()方法中處理對異常進行try catch 捕獲 程式碼如下,異常類 public class TestThread implements Runnable {

SpringBoot系統列 3 - 執行資料處理(ThreadPoolTaskExecutor、DruidDataSource)

在上篇文章的基礎上進行改造: package com.hello.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Au

Windows網路程式設計(五):執行訊息處理

對於服務端來說,呼叫accept()函式同意客戶端連線的請求後,需要處理完與這個客戶端的通訊後回到accept()繼續等待下一個客戶端的連線,如果一個客戶端請求連線時服務端並沒有在accept()處等待,客戶端是無法成功連上服務端的,因此併發客戶端連線的服務端必然是多執行緒的。 服務

java執行異常的捕獲

在多執行緒中,如果子執行緒丟擲了異常,在main中並不能捕獲到; 看一個例子 package _Executors; import java.util.concurrent.ExecutorService; import java.util.concurrent.Exe

Java 執行均勻處理同一個List中的資料

需求:使用多執行緒來處理同一個List中的資料,希望每個執行緒處理的數量是均勻的 事例程式碼如下: public class Test { static class HandleThread extends Thread { private Str

SAP ABAP程式優化-執行並行處理

                實際專案實施過程中,我們會遇到程式效能優化的問題,這裡介紹一種方法:通過RFC介面進行遠端函式的非同步呼叫實現程式的並行處理。   同步/非同步呼叫函式語法同步呼叫:CALL FUNCTION 'AAA' ;同步呼叫的實質:程式進行單執行緒執行。非同步呼叫:CALL FUNCT

3種方式實現python執行併發處理

標籤: python奇淫技巧 最優執行緒數 Ncpu=CPU的數量 Ucpu=目標CPU使用率 W/C=等待時間與計算時間的比率 為保持處理器達到期望的使用率,最優的執行緒池的大小等於$$Nthreads=Ncpu*Ucpu*(1+W/C$$ cpu密集型任務,即$W<

SAP_ABAP程式優化-執行並行處理 (轉)

實際專案實施過程中,我們會遇到程式效能優化的問題,這裡介紹一種方法:通過RFC介面進行遠端函式的非同步呼叫實現程式的並行處理。   同步/非同步呼叫函式語法同步呼叫:CALL FUNCTION 'AAA' ;同步呼叫的實質:程式進行單執行緒執行。非同步呼叫:CALL F

java執行處理和序列處理的效率比較以及結果

多執行緒還是單執行緒處理任務需要關注的內容是單個任務執行消耗的時間,下面以一個公式進行說明,假設一個任務的執行時間為T(progress),執行緒切換的平均時間為T(change),任務執行時間所佔的比例 S=T(progress)/(T(progress) +T(chan

執行異常捕獲問題:棄用Thread,改用FutureTask,附測試結果

 Thread的在其他執行緒裡丟擲的異常在當前執行緒處理不到,還是要用執行緒池或設定UncaughtExceptionHandler才能處理到。然而FutureTask就可以直接在另一個執行緒捕獲到並

執行非同步處理:AsyncTask非同步更新UI介面

AsyncTask的內部實現是一個執行緒池,每個後臺任務會提交到執行緒池中的執行緒執行,然後使用Thread+Handler的方式呼叫回撥函式。 AsyncTask抽象出後臺執行緒執行的五個狀態,分別是:1、準備執行,2、正在後臺執行,3、進度更新,4、

python 執行任務處理

from PIL import Image import urllib.request def thumbnail_image(url,size=(64,64),format='.png'): im = Image.open(urllib.request.urlopen(url))

面試中執行併發處理方式?

1.首先我們要搞清楚什麼是併發 什麼是並行?概念:在單CPU系統中,系統排程在某一時刻只能讓一個執行緒執行,雖然這種除錯機制有多種形式(大多數是時間片輪巡為主),但無論如何,要通過不斷切換需要執行的執行緒讓其執行的方式就叫併發(concurrent)。而在多CPU系統中,可以

java執行併發處理之阻塞佇列LinkedBlockingQueue用法

<pre name="code" class="java">public class ThreadRelatedService2 { // key point: records list must be ordered public void

執行異常 和 事務(一)

package com.pingan.test.call; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurre

Java 執行異常捕獲Runnable實現

1、背景:         Java 多執行緒異常不向主執行緒拋,自己處理,外部捕獲不了異常。所以要實現主執行緒對子執行緒異常的捕獲。 2、工具:         實現Runnable介面的LayerInitTask類,ThreadException類,執行緒安全的Vect

C# 執行+佇列處理大批量資料,進而縮短處理時間

public void DealData(){                int pageSize = 200; //建立佇列                         var queue = new MessageQueueManager<Model>

java執行工具類,可用該執行同時處理相同且數量的任務

package zrh4; public class ThreadModel {private static int maxThread = 4;protected static int currentThread = 0;private static ThreadMode

執行異常 和 事務(二)

1.接著上一篇程式碼變形一下 首先我們在上一篇文章的基礎上把程式碼變形的面向物件一些 package com.wei.service.impl; import java.util.ArrayList; import java.util.List; import java