?????這幾天,看了一些java線程的資料,總結了一些..
線程是什么呢?相信很多技術性的文章都會有很科學的定義.以下是我的理解:
我們通常寫的程序,是從main方法開始執行,就是一個線程,是一個隱式的線程,而我們創建的
線程就是一個從run()方法開始執行的,以run一旦結束,那這個線程也結束..
java中的線程繼承于thread,threadrunable,一個線程可以有沉睡,中止
現在看一個簡單的線程例子
?1
public?class?mythread?extends?Thread?
{
?2
?????private?int?count?=?5;
?3
?????public?mythread()?
{
?4
??????????start();
?5
?????}
?6
?????public?void?run()?
{
?7
????????while(true)?
{?????
?8
????????????System.out.println(this);
?9
????????????if(--count?==?0)?return;
10
????????????System.out.println(count);
11
???
12
????????}
13
?????}
14
15
?????public?static?void?main(String[]?args)
{
16
???????????for(int?i?=?0;?i?<?5;?i++)?
{
17
??????????????????new?mythread();
18
19
?????????}
20
21
?????}
22
} 打印出來的結果視乎各人的機器,會不相同,
但如果你的機器能打印出5,4,3,2,1,5,4,3,2,1.....的順序,那恭喜你了,可以去買彩票了.
因為在類mythread 的構造器中只有一個方法start(),這是一個靜態的方法,start()這個方法,是用來執行run方法的內容的,如果沒有start,線程是不會創建的.什么時候線程結束,是無法預計的.這有點和AJAX的異步請求的方式就有點類似,例子中創建了五個線徎,但由于他們之間不會順序執行,所以打印出來的結果每次都會有點不一樣.