多執行緒與工作流

2021-09-05 15:31:29 字數 2124 閱讀 8906

本文不是講多執行緒,也不是講在多執行緒中使用工作流什麼的,而是用設計多執行緒的思路講一下工作流的工作思想。

net中的system.threading.thread的例子很簡單,以至於許多程式設計師只學了幾個小時就以為自已會多執行緒開發的。沒有直正寫過多執行緒的人是無法體會多執行緒是多麼的…..

很多人上手wf總是覺得一些功能的實現有些怪,特另是宿主與例項或例項與例項通訊這部分。

我用多執行緒的思路講一下:

class 要參與多執行緒的類

}catch (threadinterruptedexception e)

}thread 執行緒物件= new thread((new 要參與多執行緒的類()).方法);

執行緒物件.start();

system.threading.thread.sleep(600); //一毫秒在多執行緒中也是有其作用的,因為他表示一次停頓

執行緒物件.abort();

console.writeline("主線程完成");

console.read();

執行緒物件.abort();方法會硬生生的將執行緒終止,如while中的i迴圈到234就被終止了

這樣很不好,特別是在對資操作時。而且無法捕獲到異常

class 要參與多執行緒的類

}catch (threadinterruptedexception e)

}thread 執行緒物件= new thread((new 要參與多執行緒的類()).方法);

執行緒物件.start();

system.threading.thread.sleep(600); //一毫秒在多執行緒中也是有其作用的,因為他表示一次停頓

執行緒物件.interrupt();

console.writeline("主線程完成");

console.read();

不會終止上例,因為上例的執行緒從來都沒進入過waitjoinsleep狀態,當然也不會產生異常

class 要參與多執行緒的類

}catch (threadinterruptedexception e)

}thread 執行緒物件= new thread((new 要參與多執行緒的類()).方法);

執行緒物件.start();

system.threading.thread.sleep(600); //一毫秒在多執行緒中也是有其作用的,因為他表示一次停頓

執行緒物件.interrupt();

console.writeline("主線程完成");

console.read();

由於新增了 system.threading.thread.sleep(1);,執行緒會進入waitjoinsleep狀態,執行緒物件.interrupt()生效,執行緒終止,可以捕獲到異常,並可以異常中作一些收尾工作

還有這個

class 要參與多執行緒的類

system.threading.autoresetevent w = new autoresetevent(false);

w.waitone();

console.writeline("---");

}catch (threadinterruptedexception e)

}autoresetevent與thread.sleep對interrupt()方法性質一樣

所以我在設計要參與多執行緒的方法時會類似可能會這樣

void 方法()

邏輯**單元1;

system.threading.thread.sleep(1)

邏輯**單元2;

system.threading.autoresetevent w = new autoresetevent(false);

w.waitone();

邏輯**單元3;

system.threading.thread.sleep(1)

我要與另乙個執行緒正在使用的物件通訊時,我會讓那個執行緒被乙個w.waitone()阻塞,當通訊完成時w.set(),讓那個執行緒繼續。

當然還會有lock的技巧,這裡就不說了。

我要說的是

thread.sleep,autoresetevent,以及我所說的通訊方式,

在工作流是對應的是什麼…….大家自已想吧,

你要想從一條流動的河中取出一瓢水,看完後想再將其放回源除,讓時間對這條河暫停吧

工作流建模 工作流概念

工作流建模 工作流概念 1 案例 工作流系統得基本目的是處理案例。每個案例都有乙個唯一標識,而且每個案例的生命週期都是有限的。案例生命週期都處於某個特定狀態,該狀態由三個元素組成 1 案例相關的屬性的值 案例屬性是一系列同案例相關的變數。能夠用來管理案例。正是通過這些變數,才有可能指出在特定條件下某...

工作流 一 什麼是工作流

什麼是工作流 工作流的英文全稱是 workflow,簡單理解則是業務流程的計算機化或自動化。它是是針對工作中具有固定程式的常規活動而提出的乙個概念,通過將工作活動分解定義良好的任務 角色 規則和過程來進行執行和監控,達到提高生產組織水平和工作效率的目的。工作流技術發端於70年代中期辦公自動化領域的研...

微服務與工作流

本文主要想談一談工作流在微服務系統中的使用以及工作流能夠為微服務系統帶來的好處。通過查詢資料可得,微服務的編排主要分為兩種形式,一種是 choreography 有人將其翻譯成微服務的編排 另一種是 orchestration 有人將其翻譯成微服務的編制。兩者的差異很簡單,前者是點對點互動,沒有乙個...