執行緒Thread與Runnable實現

2021-08-02 07:43:37 字數 2921 閱讀 1134

當new 乙個thread的時候,就是在主線程的基礎上再開乙個子執行緒,cpu一會兒給主線程用,一會兒給子執行緒用,所以多執行緒會降低工作效率

1:thread 自己實現自己的run方法

public static voidmain(string args)throwsinterruptedexceptioncatch(interruptedexception e) 

system.out.println("thread :"+ thread.currentthread().getname());}}

}.start();

}

2:thread 與runnabe結合

public static voidmain(string args)throwsinterruptedexceptioncatch(interruptedexception e) 

system.out.println("runnable :"+ thread.currentthread().getname());}}

}).start();

}

synchronized能夠為**塊,方法加上同步鎖,保證資料的一致性,防止在多執行緒裡面出現資料被修改或者輸出不一致等情況

1:不加synchronized出現的後果

public static voidmain(string args)

private voidinit()catch(interruptedexception e)

outer.threadtest("linzeyang");}}

}).start();

newthread(newrunnable()catch(interruptedexception e)

outer.threadtest("wangyali");}}

}).start();

}classbook

system.out.println();}}

}

執行這段**會發現,輸出結果中,linzeyang,wangyali,這個完整的字段會被多次打斷,出現其他形式的字串,threadtest方法加上synchronized關鍵字之後就不會被打斷的情況

2:加synchronized出現的結果

public static voidmain(string args)

private voidinit()catch(interruptedexception e)

outer.threadtest("linzeyang");}}

}).start();

newthread(newrunnable()catch(interruptedexception e) }}

}).start();

}classbook

system.out.println();}}

wait和notity能實現執行緒之間的通訊,使得現場在同步鎖的情況下,可以中斷本身的操作,喚醒其他執行緒的等待狀態,變為可執行狀態

1:例項應用

子執行緒迴圈10次,主線程迴圈100次,接著子執行緒再迴圈十次,主線程再迴圈100次,如此迴圈50次

public static voidmain(string args) }}

).start();

//主線程

for(inti=1;i<=50;i++)

}}classbusinesscatch(interruptedexception e)

}for(intj=1;j<=10;j++)

bshouldsub=false;

//執行完畢,喚醒主線程

this.notify();

}//主現場迴圈100次

public synchronized voidmain(inti)catch(interruptedexception e)

}for(intj=1;j<=100;j++)

bshouldsub=true;

//執行完畢,喚醒子執行緒

this.notify();

}

通過wait和notity來實現主線程與子執行緒之間的切換

多執行緒概念與Thread類

首先要了解什麼是程序,乙個程式正在執行,並且有獨立的功能,這叫做程序。執行緒是指程序中的乙個執行流程,乙個程序中可以執行多個執行緒。執行緒 執行緒是程序中的乙個執行單元,負責當前程序中程式的執行,乙個程序至少有乙個執行緒,乙個程序也可以有多個執行緒,多個執行緒同時執行指的是來回高速切換 程式執行的原...

多執行緒 Thread

如果從另外乙個執行緒操作windows窗體上的控制項,就會與主線程產生競爭,造成不可預料的後果,甚至死鎖。因此,windows gui程式設計有乙個規則 只能通過建立控制項的執行緒來操作控制項的資料!實現方法 要從執行緒外操作windows控制項,那麼就要使用invoke或begininvoke方法...

Thread執行緒類

posted on 2011 05 03 10 45 明天陪你看海 閱讀 123 編輯收藏 說明 apartmentstate 獲取或設定此執行緒的單元狀態 currentcontext 獲取執行緒正在其中執行的當前上下文 currentthread 獲取當前正在執行的執行緒 isalive 獲取乙...