?????這幾天,看了一些java線程的資料,總結(jié)了一些..
線程是什么呢?相信很多技術(shù)性的文章都會(huì)有很科學(xué)的定義.以下是我的理解:
我們通常寫(xiě)的程序,是從main方法開(kāi)始執(zhí)行,就是一個(gè)線程,是一個(gè)隱式的線程,而我們創(chuàng)建的
線程就是一個(gè)從run()方法開(kāi)始執(zhí)行的,以run一旦結(jié)束,那這個(gè)線程也結(jié)束..
java中的線程繼承于thread,threadrunable,一個(gè)線程可以有沉睡,中止
現(xiàn)在看一個(gè)簡(jiǎn)單的線程例子
?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
} 打印出來(lái)的結(jié)果視乎各人的機(jī)器,會(huì)不相同,
但如果你的機(jī)器能打印出5,4,3,2,1,5,4,3,2,1.....的順序,那恭喜你了,可以去買彩票了.
因?yàn)樵陬恗ythread 的構(gòu)造器中只有一個(gè)方法start(),這是一個(gè)靜態(tài)的方法,start()這個(gè)方法,是用來(lái)執(zhí)行run方法的內(nèi)容的,如果沒(méi)有start,線程是不會(huì)創(chuàng)建的.什么時(shí)候線程結(jié)束,是無(wú)法預(yù)計(jì)的.這有點(diǎn)和AJAX的異步請(qǐng)求的方式就有點(diǎn)類似,例子中創(chuàng)建了五個(gè)線徎,但由于他們之間不會(huì)順序執(zhí)行,所以打印出來(lái)的結(jié)果每次都會(huì)有點(diǎn)不一樣.