數學之路-vb.net並行計算(1),-vb.net並行計算
Imports System
Imports System.Threading
Module Module1
Sub Main()
Dim mythread1 As Thread
Dim mythread2 As Thread
Dim mythread3 As Thread
'建立線程對象
mythread1 = New Thread(AddressOf mythreadrun)
mythread2 = New Thread(AddressOf mythreadrun)
mythread3 = New Thread(AddressOf mythreadrun)
Console.WriteLine(Now.ToLongTimeString & "線程對象建立完畢,開始執行線程")
'執行線程
mythread1.Start("線程1")
mythread2.Start("線程2")
mythread3.Start("線程3")
'等待線程完成
mythread1.Join()
mythread2.Join()
mythread3.Join()
'線程執行完畢
Console.WriteLine(Now.ToLongTimeString & "線程執行完畢!")
End Sub
Public Sub mythreadrun(ByVal data As Object)
Console.WriteLine(data & "," & Now.ToLongTimeString & "執行")
End Sub
End Module
本部落格所有內容是原創,如果轉載請註明來源http://blog.csdn.net/myhaspl/
Dim mythread1 As Thread
初始化Thread 類的新執行個體,指定允許對象線上程啟動時傳遞給線程的委託。
線程不會在建立時開始執行。 若要為執行而調度線程,調用start方法。
上面代碼建立了3個thread對象,然後調用它們的start方法執行它們
調用join方法等它們執行完畢
可在VB.NET中建立一個新的Console應用程式,然後在模組中編寫以上代碼
New Thread(AddressOf mythreadrun)
建構函式中必須將要做為線程執行的函數做為參數傳入
mythread1.Start("線程1")
start方法可以在執行線程時,向其傳入參數
Imports System
Imports System.Threading
程式需要匯入以上命名空間
Imports System
Imports System.Threading
Module Module1
Sub Main()
Dim mythread1 As Thread
Dim mythread2 As Thread
Dim mythread3 As Thread
'建立線程對象
mythread1 = New Thread(AddressOf mythreadrun)
mythread2 = New Thread(AddressOf mythreadrun)
mythread3 = New Thread(AddressOf mythreadrun)
Console.WriteLine(Now.ToLongTimeString & "線程對象建立完畢,開始執行線程")
'執行線程
mythread1.Start("線程1")
mythread2.Start("線程2")
mythread3.Start("線程3")
'等待線程完成
mythread1.Join()
mythread2.Join()
mythread3.Join()
'線程執行完畢
Console.WriteLine(Now.ToLongTimeString & "線程執行完畢!")
End Sub
Public Sub mythreadrun(ByVal data As Object)
Dim mynum As Integer
Dim jg As Integer
mynum = 20
Try
For mynum = 20 To -20 Step -1
jg = 1000 / mynum
Console.WriteLine(data & ":" & Now.ToLongTimeString & ",1000 / " & mynum & "計算結果為:" & jg)
Thread.Sleep(1)
Next
Catch
Console.WriteLine(data & ":" & Now.ToLongTimeString & "線程異常終止!")
'終止線程
Thread.CurrentThread.Abort()
End Try
End Sub
End Module
線上程中計算1000/mynum的值,其中mynum從20開始遞減,到0時會出現除0異常,調用Thread.CurrentThread.Abort()
完成終止線程的操作
Try
For mynum = 20 To -20 Step -1
jg = 1000 / mynum
Console.WriteLine(data & ":" & Now.ToLongTimeString & ",1000 / " & mynum & "計算結果為:" & jg)
Thread.Sleep(1)
Next
Catch
Console.WriteLine(data & ":" & Now.ToLongTimeString & "線程異常終止!")
'終止線程
Thread.CurrentThread.Abort()
End Try