c 多執行緒的幾種方式

2022-02-18 05:52:48 字數 3100 閱讀 7527

1.什麼是執行緒?

程序作為作業系統執行程式的基本單位,擁有應用程式的資源,程序包含執行緒,程序的資源被執行緒共享,執行緒不擁有資源。

2.前台執行緒和後台執行緒的區別?

程式關閉時,後台執行緒直接關閉,但前台執行緒會執行完後關閉。

通過thread類新建執行緒預設為前台執行緒。其他方式建立的都是後台執行緒。

多執行緒的幾種方式

一. 非同步多執行緒

static

void main(string

args)

-----------------

", thread.currentthread.managedthreadid);

for(int i = 0; i< 5;i++)

console.writeline(

"當前引數是,當前執行緒是

",t,thread.currentthread.managedthreadid);

};action.begininvoke(

"引數是

" + i, null, null

); }

console.writeline(

"----------主程式結束,執行緒id是-----------------

", thread.currentthread.managedthreadid);

console.read();

}}

二. threads執行緒

static

void main(string

args)

-----------------

", thread.currentthread.managedthreadid);

for(int i = 0; i< 5;i++)

console.writeline(

"當前引數是,當前執行緒是

", t, thread.currentthread.managedthreadid);

};thread thread = new

thread(threadstart);

thread.start(i);

}console.writeline(

"----------主程式結束,執行緒id是-----------------

", thread.currentthread.managedthreadid);

console.read();

}

三. threadpool執行緒池\

static

void main(string

args)

-----------------

", thread.currentthread.managedthreadid);

for(int i = 0; i< 5;i++)

console.writeline(

"當前引數是,當前執行緒是

", t, thread.currentthread.managedthreadid);

};threadpool.queueuserworkitem(waitcallback, i);

}console.writeline(

"----------主程式結束,執行緒id是-----------------

", thread.currentthread.managedthreadid);

console.read();

}

四. task

static

void main(string

args)

-----------------

", thread.currentthread.managedthreadid);

taskfactory taskfactory = new

taskfactory();

for (int i = 0; i< 5;i++)

console.writeline(

"當前引數是,當前執行緒是

", t, thread.currentthread.managedthreadid);

};taskfactory.startnew(action,i);

}console.writeline(

"----------主程式結束,執行緒id是-----------------

", thread.currentthread.managedthreadid);

console.read();

}

五. parallel

static

void main(string

args)

-----------------

", thread.currentthread.managedthreadid);

action action1 = () =>

console.writeline(

"當前引數是1,當前執行緒是

", thread.currentthread.managedthreadid);

};action action2 = () =>

console.writeline(

"當前引數是2,當前執行緒是

", thread.currentthread.managedthreadid);

};action action3 = () =>

console.writeline(

"當前引數是3,當前執行緒是

", thread.currentthread.managedthreadid);

};parallel.invoke(action1, action2, action3);

console.writeline(

"----------主程式結束,執行緒id是-----------------

", thread.currentthread.managedthreadid);

console.read();

}

上面簡單介紹了5種多執行緒的使用方式

多執行緒 實現多執行緒的幾種方式

public class mythread extends thread mythread mythread1 newmythread mythread mythread2 newmythread mythread1.start mythread2.start public class mythre...

多執行緒的幾種實現方式

前面兩種可以歸結為一類 無返回值,原因很簡單,通過重寫run方法,run方式的返回值是void,所以沒有辦法返回結果 後面兩種可以歸結成一類 有返回值,通過callable介面,就要實現call方法,這個方法的返回值是object,所以返回的結果可以放在object物件中 方式1 繼承thread類...

多執行緒實現的幾種方式

public static void main string args thread1 start public class calandfuture catch interruptedexception e class mytask implements callable 通過執行緒池建立執行緒 ...