??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一级片在线看,亚洲精品中文字幕乱码三区,理论片在线观看理伦片http://www.aygfsteel.com/jzone/articles/304446.htmlGavin.leeGavin.leeTue, 01 Dec 2009 14:53:00 GMThttp://www.aygfsteel.com/jzone/articles/304446.htmlhttp://www.ibm.com/developerworks/cn/java/j-lo-jdi/

Gavin.lee 2009-12-01 22:53 发表评论
]]>
java.lang.Thread 的几个状态(有助与观察java dumpQ通过状态分析程序性能Q?/title><link>http://www.aygfsteel.com/jzone/articles/303980.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Fri, 27 Nov 2009 14:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/jzone/articles/303980.html</guid><description><![CDATA[<strong><span style="color: green">1.NEW</span></strong> <br /> 至今未启动的线E的状态?<br /> <br /> <strong><span style="color: green">2.RUNNABLE</span></strong> <br /> 可运行线E的U程状态。处于可q行状态的某一U程正在 Java 虚拟Zq行Q但它可能正在等待操作系l中的其他资源,比如处理器?<br /> <br /> <strong><span style="color: green">3.BLOCKED</span></strong> <br /> 受阻塞ƈ且正在等待监视器锁的某一U程的线E状态。处于受d状态的某一U程正在{待监视器锁Q以便进入一个同步的?ҎQ或者在调用 Object.wait 之后再次q入同步的块/Ҏ?<br /> <br /> <strong><span style="color: green">4.WAITING</span></strong> <br /> 某一{待U程的线E状态。某一U程因ؓ调用下列Ҏ之一而处于等待状态: <br /> <ul> <li>不带时值的 Object.wait <li>不带时值的 Thread.join </li> </ul> <br /> LockSupport.park <br /> 处于{待状态的U程正等待另一个线E,以执行特定操作?例如Q已l在某一对象上调用了 Object.wait() 的线E正{待另一个线E,以便在该对象上调?Object.notify() ?Object.notifyAll()。已l调用了 Thread.join() 的线E正在等待指定线E终止?<br /> <br /> <strong><span style="color: green">5.TIMED_WAITING</span></strong>h指定{待旉的某一{待U程的线E状态。某一U程因ؓ调用以下带有指定正等待时间的Ҏ之一而处于定时等待状态: <br /> <ul> <li>Thread.sleep <li>带有时值的 Object.wait <li>带有时值的 Thread.join <li>LockSupport.parkNanos <li>LockSupport.parkUntil </li> </ul> <br /> <strong><span style="color: green">6.TERMINATED</span></strong> <br /> 已终止线E的U程状态。线E已l结束执行?<br /> <br /> <strong>注意Q在l定旉点上Q一个线E只能处于一U状态。这些状态是虚拟机状态,它们q没有反映所有操作系l线E状态?/strong> <br /> <br /> Z展现U程在运行时的状态及其{换,我画了下面这个图Q?<br /> <strong><span style="color: green"><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/jzone/200911/thread-state.jpg" border="0" /></span></strong><br /> <img src ="http://www.aygfsteel.com/jzone/aggbug/303980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jzone/" target="_blank">Gavin.lee</a> 2009-11-27 22:11 <a href="http://www.aygfsteel.com/jzone/articles/303980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多线E实用操作方法大?/title><link>http://www.aygfsteel.com/jzone/articles/287381.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sun, 19 Jul 2009 15:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/jzone/articles/287381.html</guid><description><![CDATA[     摘要:  U程控制基本Ҏ   ?nbsp;   ?nbsp;                        &...  <a href='http://www.aygfsteel.com/jzone/articles/287381.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jzone/aggbug/287381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jzone/" target="_blank">Gavin.lee</a> 2009-07-19 23:41 <a href="http://www.aygfsteel.com/jzone/articles/287381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>U程理论基础http://www.aygfsteel.com/jzone/articles/287371.htmlGavin.leeGavin.leeSun, 19 Jul 2009 13:10:00 GMThttp://www.aygfsteel.com/jzone/articles/287371.html q程Q实际是静态文Ӟ所以说q程是个静态概念,实际q行的都是线E?br />
多线E:在同一个应用程序中有多个顺序流同时执行
多进E:在操作系l中能同时运行多个Q务(E序)

U程与进E的区别Q每个进E都需要操作系lؓ其分配独立的内存地址I间Q而同一q程中的所有线E在同一块地址I间中工作,q些U程可以׃n同一块内存和pȝ资源?br />
请先理解下面q句话:一个进E是一个正q行的应用程序的实例 。它׃个部分组成:一个是操作pȝ用来理q个q程的内核对象。另一个是q个q程拥有的地址I间。从执行角度斚w看,一个进E由一个或多个U程l成。一个线E是一个执行单元,它控制CPU执行q程中某一D代码段。一个线E可以访问这个进E中所有的地址I间和资源。一个进E最包括一个线E来执行代码Q这个线E又叫做ȝE? U程除了能够讉Kq程的资源外Q每个线E还拥有自己的栈


创徏U程有两U方式,如下Q?
1?扩展java.lang.Threadc,重蝲run
2?实现Runnable接口Q重写run
ThreadcM表线E类Q它的两个最主要的方法是Q?
run()——包含线E运行时所执行的代码(U程体)
start()——用于启动线E?


一个线E只能被启动一ơ。第二次启动时将会抛出java.lang.IllegalThreadExcetpion异常

在同一个时间点Q一个CPU只支持一个线E?br />
真正的多U程只存在与多CPU

所以说但CPU操作pȝ只能说支持多U程

               

两种U程模式
协作?一个线E保留对处理器的控制直到它自己决定放?nbsp;
             a.速度快、代价低 
             b.用户~程非常ȝ 
抢先?pȝ可以L的从U程中夺回对CPU的控制权Q再把控制权分给其它的线E??br />              a.两次切换之间的时间间隔就叫做旉?nbsp;
             b.效率不如协作式高 QOS核心必须负责理U程 
             c.化编E,而且使程序更加可?
多数U程的调度是抢先式的

同一个线E类Q可newZ个线E对?br />



U程Q是指进E中的一个执行流E?
U程与进E的区别Q每个进E都需要操作系lؓ其分配独立的内存地址I间Q而同一q程中的所有线E在同一块地址I间中工作,q些U程可以׃n同一块内存和pȝ资源?


如何创徏一个线E?

创徏U程有两U方式,如下Q?
1?扩展java.lang.Threadc?
2?实现Runnable接口
ThreadcM表线E类Q它的两个最主要的方法是Q?
run()——包含线E运行时所执行的代?
Start()——用于启动线E?

一个线E只能被启动一ơ。第二次启动时将会抛出java.lang.IllegalThreadExcetpion异常

U程间状态的转换Q如囄Q?

新徏状态:用new语句创徏的线E对象处于新建状态,此时它和其它的java对象一P仅仅在堆中被分配了内?
qA状态:当一个线E创Z以后Q其他的U程调用了它的start()ҎQ该U程p入了qA状态。处于这个状态的U程位于可运行池中,{待获得CPU的用权
q行状态:处于q个状态的U程占用CPU,执行E序的代?
d状态:当线E处于阻塞状态时Qjava虚拟Z会给U程分配CPUQ直到线E重新进入就l状态,它才有机会{到运行状态?
d状态分ZU情况:
1?位于对象{待池中的阻塞状态:当线E运行时Q如果执行了某个对象的wait()ҎQjava虚拟机就回把U程攑ֈq个对象的等待池?
2?位于对象锁中的阻塞状态,当线E处于运行状态时Q试图获得某个对象的同步锁时Q如果该对象的同步锁已经被其他的U程占用QJVM׃把这个线E放到这个对象的琐池中?
3?其它的阻塞状态:当前U程执行了sleep()ҎQ或者调用了其它U程的join()ҎQ或者发ZI/OhӞ׃q入q个状态中?

M状态:当线E退Zrun()ҎQ就q入了死亡状态,该线E结束了生命周期?
或者正帔R?
或者遇到异帔R?
ThreadcȝisAlive()Ҏ判断一个线E是否活着Q当U程处于M状态或者新建状态时Q该Ҏq回false,在其余的状态下Q该Ҏq回true.

U程调度
U程调度模型Q分时调度模型和抢占式调度模?
JVM采用抢占式调度模型?
所谓的多线E的q发q行Q其实是指宏观上看,各个U程轮流获得CPU的用权Q分别执行各自的d?
Q线E的调度不是跨^収ͼ它不仅取决于java虚拟机,它还依赖于操作系l)

如果希望明确地让一个线E给另外一个线E运行的ZQ可以采取以下的办法之一
1?调整各个U程的优先
2?让处于运行状态的U程调用Thread.sleep()Ҏ
3?让处于运行状态的U程调用Thread.yield()Ҏ
4?让处于运行状态的U程调用另一个线E的join()Ҏ

调整各个U程的优先
ThreadcȝsetPriority(int)和getPriority()Ҏ分别用来讄优先U和d优先U?
如果希望E序能够Ud到各个操作pȝ中,应该保在设|线E的优先U时Q只使用MAX_PRIORITY、NORM_PRIORITY、MIN_PRIORITYq?个优先?

U程睡眠Q当U程在运行中执行了sleep()ҎӞ它就会放弃CPUQ{到阻塞状态?
U程让步Q当U程在运行中执行了Threadcȝyield()静态方法时Q如果此时具有相同优先的其它线E处于就l状态,那么yield()Ҏ把当前q行的线E放到运行池中ƈ使另一个线E运行。如果没有相同优先的可q行U程Q则yield()Ҏ什么也不做?
Sleep()Ҏ和yield()Ҏ都是Threadcȝ静态方法,都会使当前处于运行状态的U程攑ּCPUQ把q行Z让给别的U程Q两者的区别在于Q?
1、sleep()Ҏ会给其他U程q行的机会,而不考虑其他U程的优先Q因此会l较低线E一个运行的ZQyield()Ҏ只会l相同优先或者更高优先的线E一个运行的Z?
2、当U程执行了sleep(long millis)Ҏ后,{到阻塞状态,参数millis指定睡眠旉Q当U程执行了yield()Ҏ后,{到就l状态?
3、sleep()Ҏ声明抛出InterruptedException异常Q而yield()Ҏ没有声明抛出M异常
4、sleep()Ҏ比yield()Ҏh更好的移植?

{待其它U程的结束:join()
当前q行的线E可以调用另一个线E的 join()ҎQ当前运行的U程{到阻塞状态,直到另一个线E运行结束,它才恢复q行?

定时器Timer:在JDK的java.util包中提供了一个实用类Timer, 它能够定时执行特定的d?

U程的同?
原子操作Q根据Java规范Q对于基本类型的赋值或者返回值操作,是原子操作。但q里的基本数据类型不包括long和double, 因ؓJVM看到的基本存储单位是32位,而long 和double都要?4位来表示。所以无法在一个时钟周期内完成?

自增操作Q?+Q不是原子操作,因ؓ它涉及到一ơ读和一ơ写?

原子操作Q由一l相关的操作完成Q这些操作可能会操纵与其它的U程׃n的资源,Z保证得到正确的运结果,一个线E在执行原子操作光Q应该采取其他的措施使得其他的线E不能操U共享资源?

同步代码块:Z保证每个U程能够正常执行原子操作QJava引入了同步机Ӟ具体的做法是在代表原子操作的E序代码前加上synchronized标记Q这L代码被称为同步代码块?

同步锁:每个JAVA对象都有且只有一个同步锁Q在M时刻Q最多只允许一个线E拥有这把锁?

当一个线E试图访问带有synchronized(this)标记的代码块Ӟ必须获得 this关键字引用的对象的锁Q在以下的两U情况下Q本U程有着不同的命q?
1?假如q个锁已l被其它的线E占用,JVM׃把这个线E放到本对象的锁池中。本U程q入d状态。锁池中可能有很多的U程Q等到其他的U程释放了锁QJVM׃从锁池中随机取出一个线E,使这个线E拥有锁Qƈ且{到就l状态?
2?假如q个锁没有被其他U程占用Q本U程会获得这把锁Q开始执行同步代码块?
Q一般情况下在执行同步代码块时不会释攑֐步锁Q但也有Ҏ情况会释攑֯象锁
如在执行同步代码块时Q遇到异常而导致线E终止,锁会被释放;在执行代码块Ӟ执行了锁所属对象的wait()ҎQ这个线E会释放对象锁,q入对象的等待池中)

U程同步的特征:
1?如果一个同步代码块和非同步代码块同时操作共享资源,仍然会造成对共享资源的竞争。因为当一个线E执行一个对象的同步代码块时Q其他的U程仍然可以执行对象的非同步代码块。(所谓的U程之间保持同步Q是指不同的U程在执行同一个对象的同步代码块时Q因获得对象的同步锁而互相牵Ӟ
2?每个对象都有唯一的同步锁
3?在静态方法前面可以用synchronized修饰W?
4?当一个线E开始执行同步代码块Ӟq不意味着必须以不间断的方式运行,q入同步代码块的U程可以执行Thread.sleep()或者执行Thread.yield()ҎQ此时它q不释放对象锁,只是把运行的Z让给其他的线E?
5?Synchronized声明不会被承,如果一个用synchronized修饰的方法被子类覆盖Q那么子cMq个Ҏ不在保持同步Q除非用synchronized修饰?

U程安全的类Q?
1?q个cȝ对象可以同时被多个线E安全的讉K?
2?每个U程都能正常的执行原子操作,得到正确的结果?
3?在每个线E的原子操作都完成后Q对象处于逻辑上合理的状态?

释放对象的锁Q?
1?执行完同步代码块׃释放对象的锁
2?在执行同步代码块的过E中Q遇到异常而导致线E终止,锁也会被释放
3?在执行同步代码块的过E中Q执行了锁所属对象的wait()ҎQ这个线E会释放对象锁,q入对象的等待池?

死锁
当一个线E等待由另一个线E持有的锁,而后者正在等待已被第一个线E持有的锁时Q就会发生死锁。JVM不监也不试N免这U情况,因此保证不发生死锁就成了E序员的责Q?

如何避免死锁
一个通用的经验法则是Q当几个U程都要讉K׃n资源A、B、C Ӟ保证每个U程都按照同L序去访问他们?

U程通信
Java.lang.ObjectcM提供了两个用于线E通信的方?
1?wait():执行了该Ҏ的线E释攑֯象的锁,JVM会把该线E放到对象的{待池中。该U程{待其它U程唤醒
2?notify():执行该方法的U程唤醒在对象的{待池中{待的一个线E,JVM从对象的{待池中随机选择一个线E,把它转到对象的锁池中?br />






Gavin.lee 2009-07-19 21:10 发表评论
]]>
多线E设计方?/title><link>http://www.aygfsteel.com/jzone/articles/287040.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Thu, 16 Jul 2009 14:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/jzone/articles/287040.html</guid><description><![CDATA[     摘要: 一Q承ThreadQ重载runҎ package com.Gavin.threaddesign; /** *//**  * **********************************************  * @description l承Thread cȝ多线E程?nbsp;设计Ҏ&nb...  <a href='http://www.aygfsteel.com/jzone/articles/287040.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jzone/aggbug/287040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jzone/" target="_blank">Gavin.lee</a> 2009-07-16 22:32 <a href="http://www.aygfsteel.com/jzone/articles/287040.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>