1. 程式人生 > >多執行緒異常 和 事務(一)

多執行緒異常 和 事務(一)

package com.pingan.test.call;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;


public class MutiThreadException {

	
	public static void main(String[] args) {
		System.out.println("MutiThreadException.main()------>start<------");
		ExecutorService service=null;
		try {
			List<Future<Object>> resultList = new ArrayList<Future<Object>>();  
//			ExceptionHandle exceptionHandle = new ExceptionHandle();
			service=Executors.newFixedThreadPool(6);
			for (int i = 0; i < 3; i++) {
				Thread t=new Thread(new  Runnable() {
					@Override
					public void run() {
						System.out.println("id "+Thread.currentThread().getName()+"---start>");

						if(Thread.currentThread().getName().endsWith("1")){
							try {
								Thread.sleep(2000);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
							int i=1/0;
//							  throw new RuntimeException();  
						}
						if(Thread.currentThread().getName().endsWith("2")){
							try {
								Thread.sleep(1000);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
//							int i=1/0;
							  throw new RuntimeException();  
						}
						try {
							Thread.sleep(1000);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
						System.out.println("id "+Thread.currentThread().getName()+"----end:");
					}
				});
//				t.setUncaughtExceptionHandler(new ExceptionHandle());
//				t.start();
				Future<Object> future = (Future<Object>) service.submit(t);
				resultList.add(future);
			}
			System.out.println("resultList.size:"+resultList.size());
			for(Future<Object> f:resultList){
				System.out.println("f------>"+f);
				Object o=null;
//				try {
					o=f.get();
//				} catch (ExecutionException  e) {
//					e.printStackTrace();
//				}
//				System.out.println(o);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			service.shutdown();
		}
		System.out.println("MutiThreadException.main()------>end<------");
	}
}


相關推薦

執行異常 事務()

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

執行異常 事務(二)

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

Java 執行基礎(十執行優先順序守護執行

 Java 多執行緒基礎(十一)執行緒優先順序和守護執行緒 一、執行緒優先順序 Java 提供了一個執行緒排程器來監控程式啟動後進去就緒狀態的所有執行緒。執行緒排程器通過執行緒的優先順序來決定排程哪些執行緒執行。一般來說,Java的執行緒排程器採用時間片輪轉演算法使多個執行緒輪轉獲得CPU的時間片。

Java 執行 joininterrupt 方法

簡述: 使用Java多執行緒中join和interrupt函式 《Java程式設計思想》 P669 ~ P670 一個執行緒可以再其他執行緒上呼叫join()方法,其效果是等待一段時間直到第二個執行緒結束才繼續執行。 如果某個執行緒在另一個執行緒t上呼叫t.join(), 此

執行詳解(

[多執行緒詳解(一)](http://www.neilx.com) 一、概念準備 1、程序 (1)直譯:正在進行中的程式 (2)解釋:執行一個程式時,會在記憶體中為程式開闢空間,這個空間就是一個程序。 (3)注意:一個程序中不可能沒有執行緒,只有有了執行緒才能執行; 程序只

java執行重要知識點整理

目錄 java多執行緒重要知識點整理一 1. 執行緒池的使用 2. java中斷機制 中斷的處理 3. 執行緒間通訊機制總結 java多執行緒重要知識點整理一 本系列文是對自己學習多執行緒和平時使用過程中的知識梳理,不適合

java執行之鎖機制

網上看了一篇關於java synchronized關鍵字使用的很好的文章,現將其簡要總結一下,加深理解。 先總結兩個規則: synchronized鎖住的是括號裡的物件,而不是程式碼。對於非static的synchronized方法,鎖的就是物件本身也就是this。 多個執行緒

執行學習總結(

一、程序和執行緒的定義 程序:程序是資源(CPU、記憶體等)分配的基本單位,它是程式執行時的一個例項。程式執行時系統就會建立一個程序,併為它分配資源,然後把該程序放入程序就緒佇列,程序排程器選中它的時候就會為它分配CPU時間,程式開始真正執行。 執行緒:執行緒是程式執行時的最小單位,它是程序

執行--thisThread.currentThread()詳解

在看多執行緒程式設計核心技術的時候,有一段程式碼讓我很困惑,所以在這裡記錄一下。 public class isalive { public static void main(String[] args) { // TODO Auto-generated method stub //T

談談執行RunnableCallable介面

Runnable介面程式碼 public interface Runnable { public abstract void run(); } Callable介面程式碼 public interface Callable<V> { V c

c#執行基礎,操作

原文https://www.cnblogs.com/wangyulong/p/7750346.html C#多執行緒程式設計實戰(一):執行緒基礎 1.1 簡介 為了防止一個應用程式控制CPU而導致其他應用程式和作業系統本身永遠被掛起這一可能情況,作業系統不得不使用某種方式將物理計

Java執行程式設計核心技術()Java執行技能

主題:     這套文章主要是把書上的內容自己消化一遍,把核心內容跟重點挑出來。讀者可以用最少的時間瞭解這本書的內容。        第一章主要講解多執行緒的概念,使用方法,一些基本的api;每小節的內容不超過十句話的總結如下:   層級結構上是:     1.

Java執行-基礎篇(

多執行緒---基礎篇,本文主要針對多執行緒的基礎進行復習,內容包括執行緒的理解,建立方式,Thread類函式理解; 1、執行緒的理解:OS系統角度:每個執行的程式都會被作業系統建立對應的程序(包括分配的資源、PCB等),程序是作業系統分配資源的基本單位(理解:程式執行需要空間,作業系統建立對應程序時

二、執行[wait()notify()/notifyAll()]

一、 wait()和notify()/notifyAll() 鎖,這裡講的就是同步鎖,同步執行的鎖,釋放完之後“鎖”之後就喪失了執行能力了,直到notify通知到wait方法, (notify並不是釋放鎖),只是通知wait可以去競爭鎖了,wait並不是立刻得到鎖,鎖在別人手裡,等待

java執行異常的捕獲

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

Java面向物件與執行綜合實驗()之封裝、繼承與

編寫一個程式,實現檔案管理系統中的使用者管理模組。要求模組中實現使用者的模擬登入過程。通過使用者輸入,獲取使用者名稱和口令;與事先記錄在程式中的使用者資訊進行對比,通過口令驗證後才能使用系統。使用者分為系統管理人員、檔案錄入人員,檔案瀏覽人員三類,相關類圖如下所示。 (1)要求在使用者類中

MySQL---當Java遇上MySQL⑤---單執行執行下的事務

事務transaction 原子性(atomicity):組成事務處理的語句形成了一個邏輯單元,不能只執行其中的一部分。 一致性(consistency):在事務處理執行前後,資料庫是一致的(資料庫資料完整性約束)。 隔離性(isolcation):一個事務處理對另

C# 執行啟動管理 單例模式

1.          List<Task> taskList = new List<Task>();             TaskFactory t

Qt修煉手冊11_執行程式設計QThread類

1.事件迴圈 學習QT多執行緒程式設計之前,有必要先熟悉事件迴圈的概念。 先看一個單執行緒介面程式的主函式程式碼: int main(int argc, char* argv[]) {   QApplication app(argc,  argv);   // 構造主視

Android執行-----併發同步(volatile)

volatile是Java提供的一種輕量級的同步機制,在併發程式設計中,它也扮演著比較重要的角色。同synchronized相比(synchronized通常稱為重量級鎖),volatile更輕量級,相比使用synchronized所帶來的龐大開銷,倘若能恰當的合理的使用volatile,自然是好事