??xml version="1.0" encoding="utf-8" standalone="yes"?>懂色aⅴ精品一区二区三区蜜月,中文字幕在线免费观看视频,jizzjizz在线观看http://www.aygfsteel.com/mison/zh-cnThu, 19 Jun 2025 23:47:34 GMTThu, 19 Jun 2025 23:47:34 GMT602010q的技术架构徏?/title><link>http://www.aygfsteel.com/mison/archive/2010/03/03/314350.html</link><dc:creator>Mison</dc:creator><author>Mison</author><pubDate>Wed, 03 Mar 2010 01:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/mison/archive/2010/03/03/314350.html</guid><wfw:comment>http://www.aygfsteel.com/mison/comments/314350.html</wfw:comment><comments>http://www.aygfsteel.com/mison/archive/2010/03/03/314350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mison/comments/commentRss/314350.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mison/services/trackbacks/314350.html</trackback:ping><description><![CDATA[<strong>~程语言<br /> </strong>首先要能跛_语言之争及语a偏见Q架构师需要在中立的角度选择最合适团队的语言Q避免在技术决{中加入q多个h喜好。在pȝ语言层面Q主要可x以下几种<br /> Erlang, 会l在圈子内行Q业界应用Erlang技术最大的障碍不是Erlang技术本w,而在于缺乏这斚w专业人才?br /> Scala, 和Erlang不同QScala有成熟JVM及丰富的周边libraryQ在异构pȝ中集成也很容易,新项目用Scala风险很小Q所以Scala在新语言中应该有较大的提升优ѝ?br /> Go, ׃刚开始推出,不适合正式目使用Q?010q会Ex上升Q可适当x?br /> 其他语言基本保持现状?a target="_blank">java论坛</a><br /> <br /> <strong>架构</strong><br /> LAMP中的<span id="wmqeeuq" class="t_tag" href="tag.php?name=Linux" onxxxxx="tagshow(event)">Linux</span>, <span id="wmqeeuq" class="t_tag" href="tag.php?name=Apache" onxxxxx="tagshow(event)">Apache</span>, <span id="wmqeeuq" class="t_tag" href="tag.php?name=MySQL" onxxxxx="tagshow(event)">MySQL</span>会受C计算中的App Engine模式的冲击,因ؓApp Engine在分布式处理Q可扩展性,E_性方面都有很大的优势?在App Engine模式中,MySQL作用会降低,退化成一U存储服务。而且App Engine的存储服务含义会更广泛,传统架构中的MySQL, Memcached, 及key value store在App Engine框架下都会以底层的服务方式提供。存储不再是软gQ而是一U可靠服务,因此也会带来分布式存储相x术的J荣?br /> <br /> Web 2.0的设计中QCache会成Z个中心元素。传l的web应用cache只是一个可选的锦上添花层,即LQPHP + MySQLq种模式也可正常q行。但随着未来应用social化及realtime的趋势,从facebook及twitter的设计来看,cache已经从可选层成ؓ核心层。cache设计的好坏直接决定架构的成|?br /> <br /> ׃web发展的趋势会使应用更realtime化,体现到技术层面是HTML5(websockets)及类似技术具有更高的价倹{但׃ȝ生力的IE存在QHTML5无法一步到位。徏议关注能解决HTML5及旧<span id="wmqeeuq" class="t_tag" href="tag.php?name=ajax" onxxxxx="tagshow(event)">ajax</span>自适应的框架?br /> <br /> |络模型斚wQ由于多核的g环境Q轻量的进E模型值得采用。如传统的C++ boost的asio, 各公司自己实现的coroutine, Erlang的process, go的goroutines, <span id="wmqeeuq" class="t_tag" href="tag.php?name=Java" onxxxxx="tagshow(event)">Java</span>/Scala?span class="t_tag" href="tag.php?name=Netty" onxxxxx="tagshow(event)">Netty</span>/Mina框架{。但C++框架的代码优雅性可l护性欠佻I性能也没有突出的优势Q可x后面几种Ҏ?br /> <br /> 分布式方面,Dynamo及Chubby的思想会逐渐在国内的目{到更广泛的应用Q架构师会逐步丢弃双写Q双机心跳等山寨式的定w设计思想Q可靠的分布式设计思想会更普及?br /> <br /> <strong>存储</strong><br /> 2009是key value/nosql产品百花齐放的年代。到2010q_它们之中优秀的会脱颖而出逐步L化,L化的产品周边的工具会更丰富,q维相关l验也会更成熟。目前阻很多key value产品推广很大一个障是q维的顾虑,而不是它们本w的性能。究竟会是Memcachedb/Tokyo Cabinet/Redisq样的小巧Y件走向主,q是Cassandraq样的巨无霸更受Ƣ迎Q我们拭目以待? <img src ="http://www.aygfsteel.com/mison/aggbug/314350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mison/" target="_blank">Mison</a> 2010-03-03 09:33 <a href="http://www.aygfsteel.com/mison/archive/2010/03/03/314350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Black设计模式】观察者模式代码解?/title><link>http://www.aygfsteel.com/mison/archive/2010/03/02/314245.html</link><dc:creator>Mison</dc:creator><author>Mison</author><pubDate>Tue, 02 Mar 2010 02:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/mison/archive/2010/03/02/314245.html</guid><wfw:comment>http://www.aygfsteel.com/mison/comments/314245.html</wfw:comment><comments>http://www.aygfsteel.com/mison/archive/2010/03/02/314245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mison/comments/commentRss/314245.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mison/services/trackbacks/314245.html</trackback:ping><description><![CDATA[<br /> 备忘下地址QBlack设计模式解析的还不错?a >http://hi.baidu.com/misoner/blog/item/2334e388d8defd749e2fb429.html</a> <img src ="http://www.aygfsteel.com/mison/aggbug/314245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mison/" target="_blank">Mison</a> 2010-03-02 10:18 <a href="http://www.aygfsteel.com/mison/archive/2010/03/02/314245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Maven2.2.1下蝲http://www.aygfsteel.com/mison/archive/2010/02/26/313965.htmlMisonMisonFri, 26 Feb 2010 01:23:00 GMThttp://www.aygfsteel.com/mison/archive/2010/02/26/313965.htmlhttp://www.aygfsteel.com/mison/comments/313965.htmlhttp://www.aygfsteel.com/mison/archive/2010/02/26/313965.html#Feedback0http://www.aygfsteel.com/mison/comments/commentRss/313965.htmlhttp://www.aygfsteel.com/mison/services/trackbacks/313965.html

 

 

下蝲地址Q?a >http://bbs.misonsoft.com/thread-1005-1-1.html

 

java论坛



Mison 2010-02-26 09:23 发表评论
]]>
新鲜出炉?0q福富笔?/title><link>http://www.aygfsteel.com/mison/archive/2010/02/24/313789.html</link><dc:creator>Mison</dc:creator><author>Mison</author><pubDate>Wed, 24 Feb 2010 06:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/mison/archive/2010/02/24/313789.html</guid><wfw:comment>http://www.aygfsteel.com/mison/comments/313789.html</wfw:comment><comments>http://www.aygfsteel.com/mison/archive/2010/02/24/313789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mison/comments/commentRss/313789.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mison/services/trackbacks/313789.html</trackback:ping><description><![CDATA[下蝲地址Q?a >http://bbs.misonsoft.com/thread-1755-1-1.html</a> <img src ="http://www.aygfsteel.com/mison/aggbug/313789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mison/" target="_blank">Mison</a> 2010-02-24 14:13 <a href="http://www.aygfsteel.com/mison/archive/2010/02/24/313789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创徏U程两种方式的比?/title><link>http://www.aygfsteel.com/mison/archive/2010/02/23/313677.html</link><dc:creator>Mison</dc:creator><author>Mison</author><pubDate>Tue, 23 Feb 2010 01:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/mison/archive/2010/02/23/313677.html</guid><wfw:comment>http://www.aygfsteel.com/mison/comments/313677.html</wfw:comment><comments>http://www.aygfsteel.com/mison/archive/2010/02/23/313677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mison/comments/commentRss/313677.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mison/services/trackbacks/313677.html</trackback:ping><description><![CDATA[装蝲QMisonQ迈胜)<a >http://bbs.misonsoft.com/thread-1225-1-2.html</a><br /> <br /> 通过铁\售票E序来理解实现多U程的两U方法:通过java.lang.Threadcd通过Runnable接口<br />   java中有两种实现多线E的方式。一是直接承Threadc,二是实现Runnable接口。那么这两种实现多线E的方式在应用上有什么区别呢?<br />   Z回答q个问题Q我们可以通过~写一D代码来q行分析。我们用代码来模拟铁路售系l,实现通过四个售票点发售某日某ơ列车的100张R,一个售点用一个线E表C?br />   我们首先q样~写q个E序Q?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_25_170_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_170_Open_Text.style.display='none'; Codehighlighter1_25_170_Closed_Image.style.display='inline'; Codehighlighter1_25_170_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_25_170_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_25_170_Closed_Text.style.display='none'; Codehighlighter1_25_170_Open_Image.style.display='inline'; Codehighlighter1_25_170_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000"> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> ThreadDome1</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_25_170_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_25_170_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_68_165_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_165_Open_Text.style.display='none'; Codehighlighter1_68_165_Closed_Image.style.display='inline'; Codehighlighter1_68_165_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_68_165_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_68_165_Closed_Text.style.display='none'; Codehighlighter1_68_165_Open_Image.style.display='inline'; Codehighlighter1_68_165_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </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 style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_68_165_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_68_165_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  ThreadTest t </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ThreadTest(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  t.start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  t.start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  t.start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  t.start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img id="Codehighlighter1_206_424_Open_Image" onclick="this.style.display='none'; Codehighlighter1_206_424_Open_Text.style.display='none'; Codehighlighter1_206_424_Closed_Image.style.display='inline'; Codehighlighter1_206_424_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_206_424_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_206_424_Closed_Text.style.display='none'; Codehighlighter1_206_424_Open_Image.style.display='inline'; Codehighlighter1_206_424_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" />  </span><span style="color: #0000ff">class</span><span style="color: #000000"> ThreadTest </span><span style="color: #0000ff">extends</span><span style="color: #000000"> Thread</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_206_424_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_206_424_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> ticket </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">100</span><span style="color: #000000">; <br /> <img id="Codehighlighter1_257_419_Open_Image" onclick="this.style.display='none'; Codehighlighter1_257_419_Open_Text.style.display='none'; Codehighlighter1_257_419_Closed_Image.style.display='inline'; Codehighlighter1_257_419_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_257_419_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_257_419_Closed_Text.style.display='none'; Codehighlighter1_257_419_Open_Image.style.display='inline'; Codehighlighter1_257_419_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </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 style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_257_419_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_257_419_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_273_414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_273_414_Open_Text.style.display='none'; Codehighlighter1_273_414_Closed_Image.style.display='inline'; Codehighlighter1_273_414_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_273_414_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_273_414_Closed_Text.style.display='none'; Codehighlighter1_273_414_Open_Image.style.display='inline'; Codehighlighter1_273_414_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_273_414_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_273_414_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_292_389_Open_Image" onclick="this.style.display='none'; Codehighlighter1_292_389_Open_Text.style.display='none'; Codehighlighter1_292_389_Closed_Image.style.display='inline'; Codehighlighter1_292_389_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_292_389_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_292_389_Closed_Text.style.display='none'; Codehighlighter1_292_389_Open_Image.style.display='inline'; Codehighlighter1_292_389_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">if</span><span style="color: #000000">(ticket </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_292_389_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_292_389_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  System.out.println(Thread.currentThread().getName() </span><span style="color: #000000">+</span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #000000">"</span><span style="color: #000000">is saling ticket</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> ticket</span><span style="color: #000000">--</span><span style="color: #000000">); <br /> <img id="Codehighlighter1_394_409_Open_Image" onclick="this.style.display='none'; Codehighlighter1_394_409_Open_Text.style.display='none'; Codehighlighter1_394_409_Closed_Image.style.display='inline'; Codehighlighter1_394_409_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_394_409_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_394_409_Closed_Text.style.display='none'; Codehighlighter1_394_409_Open_Image.style.display='inline'; Codehighlighter1_394_409_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  }</span></span><span style="color: #0000ff">else</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_394_409_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_394_409_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">break</span><span style="color: #000000">; <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />  }</span></span></div> 上面的代码中Q我们用ThreadTestcL拟售处的售过E,runҎ中的每一ơ@环都ȝ数减1Q模拟卖Z张R,同时该R号打印出来Q直接剩余的数到零为止。在ThreadDemo1cȝmainҎ中,我们创徏了一个线E对象,q复启动四ơ,希望通过q种方式产生四个U程。从q行的结果来看我们发现其实只有一个线E在q行Q这个结果告诉我们:一个线E对象只能启动一个线E,无论你调用多遍start()ҎQ结果只有一个线E?br />   我们接着修改ThreadDemo1Q在mainҎ中创建四个Thread对象Q?<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_25_194_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_194_Open_Text.style.display='none'; Codehighlighter1_25_194_Closed_Image.style.display='inline'; Codehighlighter1_25_194_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_25_194_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_25_194_Closed_Text.style.display='none'; Codehighlighter1_25_194_Open_Image.style.display='inline'; Codehighlighter1_25_194_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000"> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> ThreadDemo1</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_25_194_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_25_194_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_68_189_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_189_Open_Text.style.display='none'; Codehighlighter1_68_189_Closed_Image.style.display='inline'; Codehighlighter1_68_189_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_68_189_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_68_189_Closed_Text.style.display='none'; Codehighlighter1_68_189_Open_Image.style.display='inline'; Codehighlighter1_68_189_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </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 style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_68_189_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_68_189_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> ThreadTest().start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> ThreadTest().start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> ThreadTest().start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> ThreadTest().start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img id="Codehighlighter1_230_449_Open_Image" onclick="this.style.display='none'; Codehighlighter1_230_449_Open_Text.style.display='none'; Codehighlighter1_230_449_Closed_Image.style.display='inline'; Codehighlighter1_230_449_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_230_449_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_230_449_Closed_Text.style.display='none'; Codehighlighter1_230_449_Open_Image.style.display='inline'; Codehighlighter1_230_449_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" />  </span><span style="color: #0000ff">class</span><span style="color: #000000"> ThreadTest </span><span style="color: #0000ff">extends</span><span style="color: #000000"> Thread</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_230_449_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_230_449_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> ticket </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">100</span><span style="color: #000000">; <br /> <img id="Codehighlighter1_281_444_Open_Image" onclick="this.style.display='none'; Codehighlighter1_281_444_Open_Text.style.display='none'; Codehighlighter1_281_444_Closed_Image.style.display='inline'; Codehighlighter1_281_444_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_281_444_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_281_444_Closed_Text.style.display='none'; Codehighlighter1_281_444_Open_Image.style.display='inline'; Codehighlighter1_281_444_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </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 style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_281_444_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_281_444_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_297_439_Open_Image" onclick="this.style.display='none'; Codehighlighter1_297_439_Open_Text.style.display='none'; Codehighlighter1_297_439_Closed_Image.style.display='inline'; Codehighlighter1_297_439_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_297_439_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_297_439_Closed_Text.style.display='none'; Codehighlighter1_297_439_Open_Image.style.display='inline'; Codehighlighter1_297_439_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_297_439_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_297_439_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_316_414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_316_414_Open_Text.style.display='none'; Codehighlighter1_316_414_Closed_Image.style.display='inline'; Codehighlighter1_316_414_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_316_414_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_316_414_Closed_Text.style.display='none'; Codehighlighter1_316_414_Open_Image.style.display='inline'; Codehighlighter1_316_414_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">if</span><span style="color: #000000">(ticket </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_316_414_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_316_414_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  System.out.println(Thread.currentThread().getName() </span><span style="color: #000000">+</span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #000000">"</span><span style="color: #000000"> is saling ticket</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> ticket</span><span style="color: #000000">--</span><span style="color: #000000">); <br /> <img id="Codehighlighter1_419_434_Open_Image" onclick="this.style.display='none'; Codehighlighter1_419_434_Open_Text.style.display='none'; Codehighlighter1_419_434_Closed_Image.style.display='inline'; Codehighlighter1_419_434_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_419_434_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_419_434_Closed_Text.style.display='none'; Codehighlighter1_419_434_Open_Image.style.display='inline'; Codehighlighter1_419_434_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  }</span></span><span style="color: #0000ff">else</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_419_434_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_419_434_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">break</span><span style="color: #000000">; <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />  }</span></span></div> <br /> q下辑ֈ目的了吗?<br />   从结果上看每个票号都被打C四次Q即四个U程各自卖各自的100张票Q而不d共同?00张票。这U情冉|怎么造成的呢?我们需要的是,多个U程d理同一个资源,一个资源只能对应一个对象,在上面的E序中,我们创徏了四个ThreadTest对象Q就{于创徏了四个资源,每个资源都有100张票Q每个线E都在独自处理各自的资源?br />   l过q些实验和分析,可以ȝ出,要实现这个铁路售程序,我们只能创徏一个资源对象,但要创徏多个U程d理同一个资源对象,q且每个U程上所q行的是相同的程序代码。在回顾一下用接口编写多U程的过E?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_25_218_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_218_Open_Text.style.display='none'; Codehighlighter1_25_218_Closed_Image.style.display='inline'; Codehighlighter1_25_218_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_25_218_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_25_218_Closed_Text.style.display='none'; Codehighlighter1_25_218_Open_Image.style.display='inline'; Codehighlighter1_25_218_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000"> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> ThreadDemo1</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_25_218_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_25_218_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_68_213_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_213_Open_Text.style.display='none'; Codehighlighter1_68_213_Closed_Image.style.display='inline'; Codehighlighter1_68_213_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_68_213_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_68_213_Closed_Text.style.display='none'; Codehighlighter1_68_213_Open_Image.style.display='inline'; Codehighlighter1_68_213_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </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 style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_68_213_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_68_213_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  ThreadTest t </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ThreadTest(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> Thread(t).start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> Thread(t).start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> Thread(t).start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">new</span><span style="color: #000000"> Thread(t).start(); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img id="Codehighlighter1_259_462_Open_Image" onclick="this.style.display='none'; Codehighlighter1_259_462_Open_Text.style.display='none'; Codehighlighter1_259_462_Closed_Image.style.display='inline'; Codehighlighter1_259_462_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_259_462_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_259_462_Closed_Text.style.display='none'; Codehighlighter1_259_462_Open_Image.style.display='inline'; Codehighlighter1_259_462_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" />  </span><span style="color: #0000ff">class</span><span style="color: #000000"> ThreadTest </span><span style="color: #0000ff">implements</span><span style="color: #000000"> Runnable</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_259_462_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_259_462_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> tickets </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">100</span><span style="color: #000000">; <br /> <img id="Codehighlighter1_311_457_Open_Image" onclick="this.style.display='none'; Codehighlighter1_311_457_Open_Text.style.display='none'; Codehighlighter1_311_457_Closed_Image.style.display='inline'; Codehighlighter1_311_457_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_311_457_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_311_457_Closed_Text.style.display='none'; Codehighlighter1_311_457_Open_Image.style.display='inline'; Codehighlighter1_311_457_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </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 style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_311_457_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_311_457_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_327_452_Open_Image" onclick="this.style.display='none'; Codehighlighter1_327_452_Open_Text.style.display='none'; Codehighlighter1_327_452_Closed_Image.style.display='inline'; Codehighlighter1_327_452_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_327_452_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_327_452_Closed_Text.style.display='none'; Codehighlighter1_327_452_Open_Image.style.display='inline'; Codehighlighter1_327_452_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_327_452_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_327_452_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_347_447_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_447_Open_Text.style.display='none'; Codehighlighter1_347_447_Closed_Image.style.display='inline'; Codehighlighter1_347_447_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_347_447_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_347_447_Closed_Text.style.display='none'; Codehighlighter1_347_447_Open_Image.style.display='inline'; Codehighlighter1_347_447_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">if</span><span style="color: #000000">(tickets </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_347_447_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_347_447_Open_Text"><span style="color: #000000">{ <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  System.out.println(Thread.currentThread().getName() </span><span style="color: #000000">+</span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #000000">"</span><span style="color: #000000"> is saling ticket </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> tickets</span><span style="color: #000000">--</span><span style="color: #000000">); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />  }</span></span></div> <br /> 上面的程序中Q创Z四个U程Q每个线E调用的是同一个ThreadTest对象中的run()ҎQ访问的是同一个对象中的变?tickets)的实例,q个E序满了我们的需求。在Windows上可以启动多个记事本E序一P也就是多个进E用同一个记事本E序代码?br />   可见Q实现Runnable接口相对于承ThreadcL_有如下显著的好处Q?br />   (1)适合多个相同E序代码的线E去处理同一资源的情况,把虚拟CPU(U程)同程序的代码Q数据有效的分离Q较好地体现了面向对象的设计思想?br />   (2)可以避免׃<span id="wmqeeuq" class="t_tag" onclick="tagshow(event)" href="tag.php?name=Java">Java</span>的单l承Ҏ带来的局限。我们经常碰到这样一U情况,卛_我们要将已经l承了某一个类的子cL入多U程中,׃一个类不能同时有两个父c,所以不能用l承Threadcȝ方式Q那么,q个cd只能采用实现Runnable接口的方式了?br />   (3)有利于程序的健壮性,代码能够被多个线E共享,代码与数据是独立的。当多个U程的执行代码来自同一个类的实例时Q即U它们共享相同的代码。多个线E操作相同的数据Q与它们的代码无兟뀂当׃n讉K相同的对象时Q即它们׃n相同的数据。当U程被构造时Q需要的代码和数据通过一个对象作为构造函数实参传递进去,q个对象是一个实CRunnable接口的类的实例? <img src ="http://www.aygfsteel.com/mison/aggbug/313677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mison/" target="_blank">Mison</a> 2010-02-23 09:19 <a href="http://www.aygfsteel.com/mison/archive/2010/02/23/313677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCWCD认证之\http://www.aygfsteel.com/mison/archive/2010/02/22/313645.htmlMisonMisonMon, 22 Feb 2010 08:51:00 GMThttp://www.aygfsteel.com/mison/archive/2010/02/22/313645.htmlhttp://www.aygfsteel.com/mison/comments/313645.htmlhttp://www.aygfsteel.com/mison/archive/2010/02/22/313645.html#Feedback0http://www.aygfsteel.com/mison/comments/commentRss/313645.htmlhttp://www.aygfsteel.com/mison/services/trackbacks/313645.htmlSCJP的认证?br />
        考试的费用在中国大陆?500RMBQ不知道h是否有变Q,考试的内容主要有Q?br />
        1QThe Servlet Technology Model

        2QThe Structure and Deployment of Web Application

        3QThe Web Container Model

        4QSession Management

        5QWeb Application Security

        6QThe JavaServer PagesQJSPQ?Technoloty Model

        7QBuliding JSP Pages Using the Expression LanguageQELQ?br />
        8QBuilding JSP Pages Using Standard Actions

        9QBuilding JSP Pages Using Tag Libraries

        10QBuilding a Custom Tag Library

        11QJava EE Patterns

学习资料Q?br /> http://bbs.misonsoft.com/forum-19-1.html

Mison 2010-02-22 16:51 发表评论
]]>
MyEclipse卡机问题的解?/title><link>http://www.aygfsteel.com/mison/archive/2010/02/22/313578.html</link><dc:creator>Mison</dc:creator><author>Mison</author><pubDate>Mon, 22 Feb 2010 01:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/mison/archive/2010/02/22/313578.html</guid><wfw:comment>http://www.aygfsteel.com/mison/comments/313578.html</wfw:comment><comments>http://www.aygfsteel.com/mison/archive/2010/02/22/313578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mison/comments/commentRss/313578.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mison/services/trackbacks/313578.html</trackback:ping><description><![CDATA[在用[MyEclipse] 写代码很Ҏ卡死机,其是在对JSP文g?lt;%%>之间写代码的时候,只要一弹出提示qd死,E序失去响应Q我以ؓ是MyEclipse版本的问题,l果换了6.0??.5??.0版全都一PN是我机子的问题?可是q原pȝ后用q是一Ll果?br /> <br /> <br /> 在网上找了很久才知道Q是MyEclipse在智能提C的时候自动访问网l上sun公司的最新API文档Q只要关闭掉|络q接可以了。我试了试断开|络然后在用MyEclipse写代码,l果q真的搞定了。可是,我M能因Zq就不上|了吧,l于Q找C两全其美的解x法?br /> <br /> 在自己创建的工程名上右键Q选择Properties》在打开的窗口中点击<span id="wmqeeuq" class="t_tag" onclick="tagshow(event)" href="tag.php?name=Java">Java</span> Build Path》单击Libraries选项卡,扑ֈ<br /> <br /> JRE System Libraries->charsets.jar->Javadoc location<br /> <br /> 选中Javadoc locationQ再选择双的Remove,更改成Javadoc location: (None)Q点击OK?br /> 接下来在写代码的时候就不会再卡M?br /> <br /> MyEclipse 6.5~写jsp代码时联惌入无响应解决Ҏ    <br /> 很头疼的一个问题,在jsp面输入“.”之后,MyEclipse往往会出现无响应,要等上好几分钟才能恢复正?找了很多Ҏ,下面q个Ҏ是最有效的,其实很简单: <br /> <br /> <br /> Window-->java-->Installed JREs-->选中你的版本-->Edit-->选中jar?->Javadoc Location 那里有个path<br /> 把path下面的地址LOK了!<br /> <br /> <br /> 原因是在引用javax.servelet.jarq个包中的javadoc location 位置讄的sun官方|站。这hơ提C的时候都要去sun官方|站Ldoc所以导致MyEclipse会无响应Q当用|卡或者拔掉网U的时候,׃会出现这U情?a target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/</a><br /> <br /> 装蝲Q?a >http://bbs.misonsoft.com/thread-920-1-2.html</a><br /> <br /> <br /> <br /> <br /> M把所有关于java.sun.com的东襉Kxok了应该是?? <img src ="http://www.aygfsteel.com/mison/aggbug/313578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mison/" target="_blank">Mison</a> 2010-02-22 09:32 <a href="http://www.aygfsteel.com/mison/archive/2010/02/22/313578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ٹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">մ</a>| <a href="http://" target="_blank">ɯ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">żҸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҵ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">괨</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">ǹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">ʯʨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>