﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-ghostwu-文章分类-java基础学习</title><link>http://www.blogjava.net/ghostwu/category/19387.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:35:22 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:35:22 GMT</pubDate><ttl>60</ttl><item><title>java线程  ---- 基础得不能再基础的东西,谨以作笔记</title><link>http://www.blogjava.net/ghostwu/articles/95422.html</link><dc:creator>yoyo</dc:creator><author>yoyo</author><pubDate>Mon, 22 Jan 2007 15:02:00 GMT</pubDate><guid>http://www.blogjava.net/ghostwu/articles/95422.html</guid><wfw:comment>http://www.blogjava.net/ghostwu/comments/95422.html</wfw:comment><comments>http://www.blogjava.net/ghostwu/articles/95422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ghostwu/comments/commentRss/95422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ghostwu/services/trackbacks/95422.html</trackback:ping><description><![CDATA[     这几天，看了一些java线程的资料,总结了一些..<br />线程是什么呢?相信很多技术性的文章都会有很科学的定义.以下是我的理解:<br />我们通常写的程序,是从main方法开始执行,就是一个线程,是一个隐式的线程,而我们创建的<br />线程就是一个从run()方法开始执行的,以run一旦结束,那这个线程也结束..<br /><br />java中的线程继承于thread,threadrunable,一个线程可以有沉睡,中止<br />现在看一个简单的线程例子<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_37_445_Open_Image" onclick="this.style.display='none'; Codehighlighter1_37_445_Open_Text.style.display='none'; Codehighlighter1_37_445_Closed_Image.style.display='inline'; Codehighlighter1_37_445_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_37_445_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_37_445_Closed_Text.style.display='none'; Codehighlighter1_37_445_Open_Image.style.display='inline'; Codehighlighter1_37_445_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> mythread </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Thread </span><span id="Codehighlighter1_37_445_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_37_445_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> count </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_90_116_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_116_Open_Text.style.display='none'; Codehighlighter1_90_116_Closed_Image.style.display='inline'; Codehighlighter1_90_116_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_90_116_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_90_116_Closed_Text.style.display='none'; Codehighlighter1_90_116_Open_Image.style.display='inline'; Codehighlighter1_90_116_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> mythread() </span><span id="Codehighlighter1_90_116_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_90_116_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          start();<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img id="Codehighlighter1_141_303_Open_Image" onclick="this.style.display='none'; Codehighlighter1_141_303_Open_Text.style.display='none'; Codehighlighter1_141_303_Closed_Image.style.display='inline'; Codehighlighter1_141_303_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_141_303_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_141_303_Closed_Text.style.display='none'; Codehighlighter1_141_303_Open_Image.style.display='inline'; Codehighlighter1_141_303_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> run() </span><span id="Codehighlighter1_141_303_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_141_303_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img id="Codehighlighter1_163_296_Open_Image" onclick="this.style.display='none'; Codehighlighter1_163_296_Open_Text.style.display='none'; Codehighlighter1_163_296_Closed_Image.style.display='inline'; Codehighlighter1_163_296_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_163_296_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_163_296_Closed_Text.style.display='none'; Codehighlighter1_163_296_Open_Image.style.display='inline'; Codehighlighter1_163_296_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_163_296_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_163_296_Open_Text"><span style="COLOR: #000000">{     <br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">count </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(count);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   <br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id="Codehighlighter1_349_443_Open_Image" onclick="this.style.display='none'; Codehighlighter1_349_443_Open_Text.style.display='none'; Codehighlighter1_349_443_Closed_Image.style.display='inline'; Codehighlighter1_349_443_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_349_443_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_349_443_Closed_Text.style.display='none'; Codehighlighter1_349_443_Open_Image.style.display='inline'; Codehighlighter1_349_443_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args)</span><span id="Codehighlighter1_349_443_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_349_443_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id="Codehighlighter1_389_435_Open_Image" onclick="this.style.display='none'; Codehighlighter1_389_435_Open_Text.style.display='none'; Codehighlighter1_389_435_Closed_Image.style.display='inline'; Codehighlighter1_389_435_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_389_435_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_389_435_Closed_Text.style.display='none'; Codehighlighter1_389_435_Open_Image.style.display='inline'; Codehighlighter1_389_435_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />           </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_389_435_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_389_435_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                  </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> mythread();<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />         }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br /><br />打印出来的结果视乎各人的机器,会不相同,<br />但如果你的机器能打印出5,4,3,2,1,5,4,3,2,1.....的顺序,那恭喜你了,可以去买彩票了.<br /><br />因为在类mythread 的构造器中只有一个方法start(),这是一个静态的方法,start()这个方法,是用来执行run方法的内容的,如果没有start,线程是不会创建的.什么时候线程结束,是无法预计的.这有点和AJAX的异步请求的方式就有点类似,例子中创建了五个线徎,但由于他们之间不会顺序执行,所以打印出来的结果每次都会有点不一样.<br /><br /><br /><img src ="http://www.blogjava.net/ghostwu/aggbug/95422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ghostwu/" target="_blank">yoyo</a> 2007-01-22 23:02 <a href="http://www.blogjava.net/ghostwu/articles/95422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>