ºìÁªLinuxÃÅ»§
Linux°ïÖú

Java¸ß¼¶£­½âÎöJavaÖеĶàÏ̻߳úÖÆ

·¢²¼Ê±¼ä:2006-05-02 11:04:50À´Ô´:ºìÁª×÷Õß:Çç
½ø³ÌÓëÓ¦ÓóÌÐòµÄÇø±ð



½ø³Ì£¨Process£©ÊÇ×î³õ¶¨ÒåÔÚUnixµÈ¶àÓû§¡¢¶àÈÎÎñ²Ù×÷ϵͳ»·¾³ÏÂÓÃÓÚ±íʾӦÓóÌÐòÔÚÄÚ´æ»·¾³Öлù±¾Ö´Ðе¥ÔªµÄ¸ÅÄî¡£ÒÔUnix²Ù×÷ϵͳΪÀý£¬½ø³ÌÊÇUnix²Ù×÷ϵͳ»·¾³ÖеĻù±¾³É·Ö¡¢ÊÇϵͳ×ÊÔ´·ÖÅäµÄ»ù±¾µ¥Î»¡£Unix²Ù×÷ϵͳÖÐÍê³ÉµÄ¼¸ºõËùÓÐÓû§¹ÜÀíºÍ×ÊÔ´·ÖÅäµÈ¹¤×÷¶¼ÊÇͨ¹ý²Ù×÷ϵͳ¶ÔÓ¦ÓóÌÐò½ø³ÌµÄ¿ØÖÆÀ´ÊµÏֵġ£

C¡¢C++¡¢JavaµÈÓïÑÔ±àдµÄÔ´³ÌÐò¾­ÏàÓ¦µÄ±àÒëÆ÷±àÒë³É¿ÉÖ´ÐÐÎļþºó£¬Ìá½»¸ø¼ÆËã»ú´¦ÀíÆ÷ÔËÐС£Õâʱ£¬´¦ÔÚ¿ÉÖ´ÐÐ״̬ÖеÄÓ¦ÓóÌÐò³ÆΪ½ø³Ì¡£´ÓÓû§½Ç¶ÈÀ´¿´£¬½ø³ÌÊÇÓ¦ÓóÌÐòµÄÒ»¸öÖ´Ðйý³Ì¡£´Ó²Ù×÷ϵͳºËÐĽǶÈÀ´¿´£¬½ø³Ì´ú±íµÄÊDzÙ×÷ϵͳ·ÖÅäµÄÄÚ´æ¡¢CPUʱ¼äƬµÈ×ÊÔ´µÄ»ù±¾µ¥Î»£¬ÊÇΪÕýÔÚÔËÐеijÌÐòÌṩµÄÔËÐл·¾³¡£½ø³ÌÓëÓ¦ÓóÌÐòµÄÇø±ðÔÚÓÚÓ¦ÓóÌÐò×÷Ϊһ¸ö¾²Ì¬Îļþ´æ´¢ÔÚ¼ÆËã»úϵͳµÄÓ²Å̵ȴ洢¿Õ¼äÖУ¬¶ø½ø³ÌÔòÊÇ´¦ÓÚ¶¯Ì¬Ìõ¼þÏÂÓɲÙ×÷ϵͳά»¤µÄϵͳ×ÊÔ´¹ÜÀíʵÌå¡£¶àÈÎÎñ»·¾³ÏÂÓ¦ÓóÌÐò½ø³ÌµÄÖ÷ÒªÌصã°üÀ¨£º

¡ñ½ø³ÌÔÚÖ´Ðйý³ÌÖÐÓÐÄÚ´æµ¥ÔªµÄ³õʼÈë¿Úµã£¬²¢ÇÒ½ø³Ì´æ»î¹ý³ÌÖÐʼÖÕÓµÓжÀÁ¢µÄÄÚ´æµØÖ·¿Õ¼ä£»

¡ñ½ø³ÌµÄÉú´æÆÚ״̬°üÀ¨´´½¨¡¢¾ÍÐ÷¡¢ÔËÐС¢×èÈûºÍËÀÍöµÈÀàÐÍ£»

¡ñ´ÓÓ¦ÓóÌÐò½ø³ÌÔÚÖ´Ðйý³ÌÖÐÏòCPU·¢³öµÄÔËÐÐÖ¸ÁîÐÎʽ²»Í¬£¬¿ÉÒÔ½«½ø³ÌµÄ״̬·ÖΪÓû§Ì¬ºÍºËÐÄ̬¡£´¦ÓÚÓû§Ì¬ÏµĽø³ÌÖ´ÐеÄÊÇÓ¦ÓóÌÐòÖ¸Áî¡¢´¦ÓÚºËÐÄ̬ϵÄÓ¦ÓóÌÐò½ø³ÌÖ´ÐеÄÊDzÙ×÷ϵͳָÁî¡£

ÔÚUnix²Ù×÷ϵͳÆô¶¯¹ý³ÌÖУ¬ÏµÍ³×Ô¶¯´´½¨swapper¡¢initµÈϵͳ½ø³Ì£¬ÓÃÓÚ¹ÜÀíÄÚ´æ×ÊÔ´ÒÔ¼°¶ÔÓû§½ø³Ì½øÐе÷¶ÈµÈ¡£ÔÚUnix»·¾³ÏÂÎÞÂÛÊÇÓɲÙ×÷ϵͳ´´½¨µÄ½ø³Ì»¹ÒªÓÉÓ¦ÓóÌÐòÖ´Ðд´½¨µÄ½ø³Ì£¬¾ùÓµÓÐΨһµÄ½ø³Ì±êʶ£¨PID£©¡£

½ø³ÌÓëJavaÏ̵߳ÄÇø±ð

Ó¦ÓóÌÐòÔÚÖ´Ðйý³ÌÖдæÔÚÒ»¸öÄÚ´æ¿Õ¼äµÄ³õʼÈë¿ÚµãµØÖ·¡¢Ò»¸ö³ÌÐòÖ´Ðйý³ÌÖеĴúÂëÖ´ÐÐÐòÁÐÒÔ¼°ÓÃÓÚ±êʶ½ø³Ì½áÊøµÄÄÚ´æ³ö¿ÚµãµØÖ·£¬ÔÚ½ø³ÌÖ´Ðйý³ÌÖеÄÿһʱ¼äµã¾ùÓÐΨһµÄ´¦ÀíÆ÷Ö¸ÁîÓëÄÚ´æµ¥ÔªµØÖ·Ïà¶ÔÓ¦¡£

JavaÓïÑÔÖж¨ÒåµÄỊ̈߳¨Thread£©Í¬Ñù°üÀ¨Ò»¸öÄÚ´æÈë¿ÚµãµØÖ·¡¢Ò»¸ö³ö¿ÚµãµØÖ·ÒÔ¼°Äܹ»Ë³ÐòÖ´ÐеĴúÂëÐòÁС£µ«Êǽø³ÌÓëÏ̵߳ÄÖØÒªÇø±ðÔÚÓÚÏ̲߳»Äܹ»µ¥¶ÀÖ´ÐУ¬Ëü±ØÐëÔËÐÐÔÚ´¦Óڻ״̬µÄÓ¦ÓóÌÐò½ø³ÌÖУ¬Òò´Ë¿ÉÒÔ¶¨ÒåÏß³ÌÊdzÌÐòÄÚ²¿µÄ¾ßÓв¢·¢ÐÔµÄ˳Ðò´úÂëÁ÷¡£

Unix ²Ù×÷ϵͳºÍMicrosoft Windows²Ù×÷ϵͳ֧³Ö¶àÓû§¡¢¶à½ø³ÌµÄ²¢·¢Ö´ÐУ¬¶øJavaÓïÑÔÖ§³ÖÓ¦ÓóÌÐò½ø³ÌÄÚ²¿µÄ¶à¸öÖ´ÐÐÏ̵߳IJ¢·¢Ö´ÐС£¶àÏ̵߳ÄÒâÒåÔÚÓÚÒ»¸öÓ¦ÓóÌÐòµÄ¶à¸öÂß¼­µ¥Ôª¿ÉÒÔ²¢·¢µØÖ´ÐС£µ«ÊǶàÏ̲߳¢²»Òâζ×Ŷà¸öÓû§½ø³ÌÔÚÖ´ÐУ¬²Ù×÷ϵͳҲ²»°Ñÿ¸öÏß³Ì×÷Ϊ¶ÀÁ¢µÄ½ø³ÌÀ´·ÖÅä¶ÀÁ¢µÄϵͳ×ÊÔ´¡£½ø³Ì¿ÉÒÔ´´½¨Æä×Ó½ø³Ì£¬×Ó½ø³ÌÓ븸½ø³ÌÓµÓв»Í¬µÄ¿ÉÖ´ÐдúÂëºÍÊý¾ÝÄÚ´æ¿Õ¼ä¡£¶øÔÚÓÃÓÚ´ú±íÓ¦ÓóÌÐòµÄ½ø³ÌÖжà¸öÏ̹߳²ÏíÊý¾ÝÄÚ´æ¿Õ¼ä£¬µ«±£³Öÿ¸öÏß³ÌÓµÓжÀÁ¢µÄÖ´ÐжÑÕ»ºÍ³ÌÐòÖ´ÐÐÉÏÏÂÎÄ£¨Context£©¡£

»ùÓÚÉÏÊöÇø±ð£¬Ïß³ÌÒ²¿ÉÒÔ³ÆΪÇáÐͽø³Ì (Light Weight Process£¬LWP)¡£²»Í¬Ï̼߳äÔÊÐíÈÎÎñЭ×÷ºÍÊý¾Ý½»»»£¬Ê¹µÃÔÚ¼ÆËã»úϵͳ×ÊÔ´ÏûºÄµÈ·½Ãæ·Ç³£Á®¼Û¡£

Ïß³ÌÐèÒª²Ù×÷ϵͳµÄÖ§³Ö£¬²»ÊÇËùÓÐÀàÐ͵ļÆËã»ú¶¼Ö§³Ö¶àÏß³ÌÓ¦ÓóÌÐò¡£Java³ÌÐòÉè¼ÆÓïÑÔ½«Ïß³ÌÖ§³ÖÓëÓïÑÔÔËÐл·¾³½áºÏÔÚÒ»Æð£¬ÌṩÁ˶àÈÎÎñ²¢·¢Ö´ÐеÄÄÜÁ¦¡£Õâ¾ÍºÃ±ÈÒ»¸öÈËÔÚ´¦Àí¼ÒÎñµÄ¹ý³ÌÖУ¬½«Ò·þ·Åµ½Ï´Ò»úÖÐ×Ô¶¯Ï´µÓºó½«´óÃ×·ÅÔڵ緹¹øÀȻºó¿ªÊ¼×ö²Ë¡£µÈ²Ë×öºÃÁË£¬·¹ÊìÁËͬʱÒ·þҲϴºÃÁË¡£

ÐèҪעÒâµÄÊÇ£ºÔÚÓ¦ÓóÌÐòÖÐʹÓöàÏ̲߳»»áÔö¼Ó CPU µÄÊý¾Ý´¦ÀíÄÜÁ¦¡£Ö»ÓÐÔÚ¶àCPU µÄ¼ÆËã»ú»òÕßÔÚÍøÂç¼ÆËãÌåϵ½á¹¹Ï£¬½«Java³ÌÐò»®·ÖΪ¶à¸ö²¢·¢Ö´ÐÐÏ̺߳ó£¬Í¬Ê±Æô¶¯¶à¸öÏß³ÌÔËÐУ¬Ê¹²»Í¬µÄÏß³ÌÔËÐÐÔÚ»ùÓÚ²»Í¬´¦ÀíÆ÷µÄJavaÐéÄâ»úÖУ¬²ÅÄÜÌá¸ßÓ¦ÓóÌÐòµÄÖ´ÐÐЧÂÊ¡£

ÁíÍ⣬Èç¹ûÓ¦ÓóÌÐò±ØÐëµÈ´ýÍøÂçÁ¬½Ó»òÊý¾Ý¿âÁ¬½ÓµÈÊý¾ÝÍÌÍÂËÙ¶ÈÏà¶Ô½ÏÂýµÄ×ÊԴʱ£¬¶àÏß³ÌÓ¦ÓóÌÐòÊǷdz£ÓÐÀûµÄ¡£»ùÓÚInternetµÄÓ¦ÓóÌÐòÓбØÒªÊǶàÏß³ÌÀàÐ͵ģ¬ÀýÈ磬µ±¿ª·¢ÒªÖ§³Ö´óÁ¿¿Í»§»úµÄ·þÎñÆ÷¶ËÓ¦ÓóÌÐòʱ£¬¿ÉÒÔ½«Ó¦ÓóÌÐò´´½¨³É¶àÏß³ÌÐÎʽÀ´ÏìÓ¦¿Í»§¶ËµÄÁ¬½ÓÇëÇó£¬Ê¹Ã¿¸öÁ¬½ÓÓû§¶ÀÕ¼Ò»¸ö¿Í»§¶ËÁ¬½ÓÏ̡߳£ÕâÑù£¬Óû§¸Ð¾õ·þÎñÆ÷ֻΪÁ¬½ÓÓû§×Ô¼º·þÎñ£¬´Ó¶øËõ¶ÌÁË·þÎñÆ÷µÄ¿Í»§¶ËÏìӦʱ¼ä¡£

JavaÓïÑԵĶàÏ̳߳ÌÐòÉè¼Æ·½·¨



ÀûÓÃJavaÓïÑÔʵÏÖ¶àÏß³ÌÓ¦ÓóÌÐòµÄ·½·¨ºÜ¼òµ¥¡£¸ù¾Ý¶àÏß³ÌÓ¦ÓóÌÐò¼Ì³Ð»òʵÏÖ¶ÔÏóµÄ²»Í¬¿ÉÒÔ²ÉÓÃÁ½ÖÖ·½Ê½£ºÒ»ÖÖÊÇÓ¦ÓóÌÐòµÄ²¢·¢ÔËÐжÔÏóÖ±½Ó¼Ì³ÐJavaµÄÏß³ÌÀàThread£»ÁíÍâÒ»ÖÖ·½Ê½ÊǶ¨Òå²¢·¢Ö´ÐжÔÏóʵÏÖRunnable½Ó¿Ú¡£

¼Ì³ÐThreadÀàµÄ¶àÏ̳߳ÌÐòÉè¼Æ·½·¨

Thread ÀàÊÇJDKÖж¨ÒåµÄÓÃÓÚ¿ØÖÆÏ̶߳ÔÏóµÄÀ࣬ÔÚ¸ÃÀàÖзâ×°ÁËÓÃÓÚ½øÐÐÏ߳̿ØÖƵķ½·¨¡£¼ûÏÂÃæµÄʾÀý´úÂ룺

//Consumer.java

import java.util.*;

class Consumer extends Thread

{

int nTime;

String strConsumer;

public Consumer(int nTime, String strConsumer)

{ this.nTime = nTime;

this.strConsumer = strConsumer;

}

public void run()

{

while(true)

{ try

{

System.out.println("Consumer name:"+strConsumer+" ");

Thread.sleep(nTime);

}

catch(Exception e)

{

e.printStackTrace();

} ¡¡} }

static public void main(String args[])

{ Consumer aConsumer = new Consumer (1000, "aConsumer");

aConsumer.start();

Consumer bConsumer = new Consumer (2000, "bConsumer");

bConsumer.start();

Consumer cConsumer = new Consumer (3000, "cConsumer ");

cConsumer.start();

} }

´ÓÉÏÃæµÄ³ÌÐò´úÂë¿ÉÒÔ¿´³ö£º¶àÏß³ÌÖ´ÐеØÏÂConsumer¼Ì³ÐJavaÓïÑÔÖеÄÏß³ÌÀàThread²¢ÇÒÔÚmain·½·¨Öд´½¨ÁËÈý¸öConsumer¶ÔÏóµÄʵÀý¡£µ±µ÷ÓöÔÏóʵÀýµÄstart·½·¨Ê±£¬×Ô¶¯µ÷ÓÃConsumerÀàÖж¨ÒåµÄrun·½·¨Æô¶¯¶ÔÏóÏß³ÌÔËÐС£Ïß³ÌÔËÐеĽá¹ûÊÇÿ¼ä¸ônTimeʱ¼ä´òÓ¡³ö¶ÔÏóʵÀýÖеÄ×Ö·û´®³ÉÔ±±äÁ¿strConsumerµÄÄÚÈÝ¡£

¿ÉÒÔ×ܽá³ö¼Ì³ÐThreadÀàµÄ¶àÏ̳߳ÌÐòÉè¼Æ·½·¨ÊÇʹӦÓóÌÐòÀà¼Ì³ÐThreadÀಢÇÒÔÚ¸ÃÀàµÄrun·½·¨ÖÐʵÏÖ²¢·¢ÐÔ´¦Àí¹ý³Ì¡£



ʵÏÖRunnable½Ó¿ÚµÄ¶àÏ̳߳ÌÐòÉè¼Æ·½·¨



JavaÓïÑÔÖÐÌṩµÄÁíÍâÒ»ÖÖʵÏÖ¶àÏß³ÌÓ¦ÓóÌÐòµÄ·½·¨ÊǶàÏ̶߳ÔÏóʵÏÖRunnable½Ó¿Ú²¢ÇÒÔÚ¸ÃÀàÖж¨ÒåÓÃÓÚÆô¶¯Ï̵߳Ärun·½·¨¡£ÕâÖÖ¶¨Ò巽ʽµÄºÃ´¦ÔÚÓÚ¶àÏß³ÌÓ¦ÓöÔÏó¿ÉÒԼ̳ÐÆäËü¶ÔÏó¶ø²»ÊDZØÐë¼Ì³ÐThreadÀ࣬´Ó¶øÄܹ»Ôö¼ÓÀඨÒåµÄÂß¼­ÐÔ¡£

ʵÏÖRunnable½Ó¿ÚµÄ¶àÏß³ÌÓ¦ÓóÌÐò¿ò¼Ü´úÂëÈçÏÂËùʾ£º

//Consumer.java

import java.util.*;

class Consumer implements Runnable

{

¡­ ¡­

public Consumer(int nTime, String strConsumer){¡­ ¡­}

public void run(){¡­ ¡­}

static public void main(String args[])

{

Thread aConsumer = new Thread(new Consumer(1000, "aConsumer"));

aConsumer.start();

//ÆäËü¶ÔÏóʵÀýµÄÔËÐÐÏß³Ì

//¡­ ¡­

} }

´ÓÉÏÊö´úÂë¿ÉÒÔ¿´³ö£º¸ÃÀàʵÏÖÁËRunnable½Ó¿Ú²¢ÇÒÔÚ¸ÃÀàÖж¨ÒåÁËrun·½·¨¡£ÕâÖÖ¶àÏß³ÌÓ¦ÓóÌÐòµÄʵÏÖ·½Ê½Óë¼Ì³ÐThreadÀàµÄ¶àÏß³ÌÓ¦ÓóÌÐòµÄÖØÒªÇø±ðÔÚÓÚÆô¶¯¶àÏ̶߳ÔÏóµÄ·½·¨Éè¼Æ·½·¨²»Í¬¡£ÔÚÉÏÊö´úÂëÖУ¬Í¨¹ý´´½¨Thread¶ÔÏóʵÀý²¢ÇÒ½«Ó¦ÓöÔÏó×÷Ϊ´´½¨ThreadÀàʵÀýµÄ²ÎÊý¡£

Ï̼߳äµÄͬ²½

Java Ó¦ÓóÌÐòµÄ¶à¸öÏ̹߳²Ïíͬһ½ø³ÌµÄÊý¾Ý×ÊÔ´£¬¶à¸öÓû§Ïß³ÌÔÚ²¢·¢ÔËÐйý³ÌÖпÉÄÜͬʱ·ÃÎʾßÓÐÃô¸ÐÐÔµÄÄÚÈÝ¡£ÔÚJavaÖж¨ÒåÁËÏß³Ìͬ²½µÄ¸ÅÄʵÏÖ¶Ô¹²Ïí×ÊÔ´µÄÒ»ÖÂÐÔά»¤¡£ÏÂÃæÒÔ±ÊÕß×î½ü¿ª·¢µÄÒƶ¯Í¨ÐżƷÑϵͳÖÐÏ̼߳äͬ²½¿ØÖÆ·½·¨£¬ËµÃ÷JavaÓïÑÔÖжàÏß³Ìͬ²½·½Ê½µÄʵÏÖ¹ý³Ì¡£

ÔÚûÓжàÏß³Ìͬ²½¿ØÖƲßÂÔÌõ¼þϵĿͻ§ÕË»§ÀඨÒå¿ò¼Ü´úÂëÈçÏÂËùʾ£º

public class RegisterAccount

{float fBalance;

//¿Í»§½É·Ñ·½·¨

public void deposit(float fFees){ fBalance += fFees; }

//ͨ»°¼Æ·Ñ·½·¨

public void withdraw(float fFees){ fBalance -= fFees; }

¡­ ¡­

} ¡¡

¶ÁÕßÒ²Ðí»áÈÏΪ£ºÉÏÊö³ÌÐò´úÂëÍêÈ«Äܹ»Âú×ã¼Æ·Ñϵͳʵ¼ÊµÄÐèÒª¡£È·Êµ£¬ÔÚµ¥Ï̻߳·¾³Ï¸óÌÐòȷʵÊÇ¿É¿¿µÄ¡£µ«ÊÇ£¬¶à½ø³Ì²¢·¢ÔËÐеÄÇé¿öÊÇÔõÑùµÄÄØ£¿¼ÙÉè·¢ÉúÕâÖÖÇé¿ö£º¿Í»§ÔÚ¿Í»§·þÎñÖÐÐĽøÐнɷѵÄͬʱÕýÔÚÀûÓÃÒƶ¯Í¨ÐÅÉ豸½ö´Ëͨ»°£¬¿Í»§Í¨»°½áÊøʱ¼Æ·ÑϵͳÆô¶¯¼Æ·Ñ½ø³Ì£¬¶øͬʱ·þÎñÖÐÐĵŤ×÷ÈËÔ±Ò²Ìá½»½É·Ñ½ø³ÌÔËÐС£¶ÁÕß¿ÉÒÔ¿´µ½Èç¹û·¢ÉúÕâÖÖÇé¿ö£¬¶Ô¿Í»§ÕË»§µÄ´¦ÀíÊDz»ÑÏËàµÄ¡£

ÈçºÎ½â¾öÕâÖÖÎÊÌâÄØ£¿ºÜ¼òµ¥£¬ÔÚ RegisterAccountÀà·½·¨¶¨ÒåÖмÓÉÏÓÃÓÚ±êʶͬ²½·½·¨µÄ¹Ø¼ü×Ösynchronized¡£ÕâÑù£¬ÔÚͬ²½·½·¨Ö´Ðйý³ÌÖи÷½·¨Éæ¼°µÄ¹²Ïí×ÊÔ´£¨ÔÚÉÏÊö´úÂëÖÐΪfBalance³ÉÔ±±äÁ¿£©½«±»¼ÓÉϹ²ÏíËø£¬ÒÔÈ·±£ÔÚ·½·¨ÔËÐÐÆÚ¼äÖ»Óи÷½·¨Äܹ»¶Ô¹²Ïí×ÊÔ´½øÐзÃÎÊ£¬Ö±µ½¸Ã·½·¨µÄÏß³ÌÔËÐнáÊø´ò¿ª¹²ÏíËø£¬ÆäËüÏ̲߳ÅÄܹ»·ÃÎÊÕâЩ¹²Ïí×ÊÔ´¡£ÔÚ¹²ÏíËøûÓдò¿ªµÄʱºòÆäËü·ÃÎʹ²Ïí×ÊÔ´µÄÏ̴߳¦ÓÚ×èÈû״̬¡£

½øÐÐÏß³Ìͬ²½²ßÂÔ¿ØÖƺóµÄRegisterAccountÀඨÒåÈçÏÂÃæ´úÂëËùʾ£º

public class RegisterAccount

{float fBalance;

public synchronized void deposit(float fFees){ fBalance += fFees; }

public synchronized void withdraw(float fFees){ fBalance -= fFees; }

¡­ ¡­

}

´Ó¾­¹ýÏß³Ìͬ²½»úÖƶ¨ÒåºóµÄ´úÂëÐÎʽ¿ÉÒÔ¿´³ö£ºÔÚ¶Ô¹²Ïí×ÊÔ´½øÐзÃÎʵķ½·¨·ÃÎÊÊôÐԹؼü×Ö£¨public£©ºó¸½¼Óͬ²½¶¨Òå¹Ø¼ü×Ösynchronized£¬Ê¹µÃͬ²½·½·¨ÔÚ¶Ô¹²Ïí×ÊÔ´·ÃÎʵÄʱºò£¬ÎªÕâЩÃô¸Ð×ÊÔ´¸½¼Ó¹²ÏíËøÀ´¿ØÖÆ·½·¨Ö´ÐÐÆÚ¼äµÄ×ÊÔ´¶ÀÕ¼ÐÔ£¬ÊµÏÖÁËÓ¦ÓÃϵͳÊý¾Ý×ÊÔ´µÄÒ»ÖÂÐÔ¹ÜÀíºÍά»¤¡£

Ï̵߳Ä״̬¿ØÖÆ



ÔÚÕâÀïÐèÒªÃ÷È·µÄÊÇ£ºÎÞÂÛ²ÉÓü̳ÐThreadÀ໹ÊÇʵÏÖRunnable½Ó¿ÚÀ´ÊµÏÖÓ¦ÓóÌÐòµÄ¶àÏß³ÌÄÜÁ¦£¬¶¼ÐèÒªÔÚ¸ÃÀàÖж¨ÒåÓÃÓÚÍê³Éʵ¼Ê¹¦ÄܵÄrun·½·¨£¬Õâ¸örun·½·¨³ÆΪÏß³ÌÌ壨Thread Body£©¡£°´ÕÕÏß³ÌÌåÔÚ¼ÆËã»úϵͳÄÚ´æÖеÄ״̬²»Í¬£¬¿ÉÒÔ½«Ï̷߳ÖΪ´´½¨¡¢¾ÍÐ÷¡¢ÔËÐС¢Ë¯Ãß¡¢¹ÒÆðºÍËÀÍöµÈÀàÐÍ¡£ÕâЩÏß³Ì״̬ÀàÐÍÏÂÏ̵߳ÄÌØÕ÷Ϊ£º

´´½¨×´Ì¬£ºµ±ÀûÓÃnew¹Ø¼ü×Ö´´½¨Ï̶߳ÔÏóʵÀýºó£¬Ëü½ö½ö×÷Ϊһ¸ö¶ÔÏóʵÀý´æÔÚ£¬JVMûÓÐΪÆä·ÖÅäCPUʱ¼äƬµÈÏß³ÌÔËÐÐ×ÊÔ´£»

¾ÍÐ÷״̬£ºÔÚ´¦ÓÚ´´½¨×´Ì¬µÄÏß³ÌÖе÷ÓÃstart·½·¨½«Ï̵߳Ä״̬ת»»Îª¾ÍÐ÷״̬¡£Õâʱ£¬Ïß³ÌÒѾ­µÃµ½³ýCPUʱ¼äÖ®ÍâµÄÆäËüϵͳ×ÊÔ´£¬Ö»µÈJVMµÄÏ̵߳÷¶ÈÆ÷°´ÕÕÏ̵߳ÄÓÅÏȼ¶¶Ô¸ÃÏ߳̽øÐе÷¶È£¬´Ó¶øʹ¸ÃÏß³ÌÓµÓÐÄܹ»»ñµÃCPUʱ¼äƬµÄ»ú»á¡£

˯Ãß״̬£ºÔÚÏß³ÌÔËÐйý³ÌÖпÉÒÔµ÷ÓÃsleep·½·¨²¢ÔÚ·½·¨²ÎÊýÖÐÖ¸¶¨Ï̵߳Ä˯Ãßʱ¼ä½«Ïß³Ì״̬ת»»ÎªË¯Ãß״̬¡£Õâʱ£¬¸ÃÏß³ÌÔÚ²»ÊÍ·ÅÕ¼ÓÃ×ÊÔ´µÄÇé¿öÏÂÍ£Ö¹ÔËÐÐÖ¸¶¨µÄ˯Ãßʱ¼ä¡£Ê±¼äµ½´ïºó£¬Ïß³ÌÖØÐÂÓÉJVMÏ̵߳÷¶ÈÆ÷½øÐе÷¶ÈºÍ¹ÜÀí¡£

¹ÒÆð״̬£º¿ÉÒÔͨ¹ýµ÷ÓÃsuspend·½·¨½«Ï̵߳Ä״̬ת»»Îª¹ÒÆð״̬¡£Õâʱ£¬Ï߳̽«ÊÍ·ÅÕ¼ÓõÄËùÓÐ×ÊÔ´£¬ÓÉJVMµ÷¶ÈתÈëÁÙʱ´æ´¢¿Õ¼ä£¬Ö±ÖÁÓ¦ÓóÌÐòµ÷ÓÃresume·½·¨»Ö¸´Ïß³ÌÔËÐС£

ËÀÍö״̬£ºµ±Ïß³ÌÌåÔËÐнáÊø»òÕßµ÷ÓÃÏ̶߳ÔÏóµÄstop·½·¨ºóÏ߳̽«ÖÕÖ¹ÔËÐУ¬ÓÉJVMÊÕ»ØÏß³ÌÕ¼ÓõÄ×ÊÔ´¡£

ÔÚJavaÏß³ÌÀàÖзֱð¶¨ÒåÁËÏàÓ¦µÄ·½·¨£¬ÓÃÓÚÔÚÓ¦ÓóÌÐòÖжÔÏß³Ì״̬½øÐпØÖƺ͹ÜÀí¡£

Ï̵߳ĵ÷¶È

Ï̵߳÷ÓõÄÒâÒåÔÚÓÚJVMÓ¦¶ÔÔËÐеĶà¸öÏ߳̽øÐÐϵͳ¼¶µÄЭµ÷£¬ÒÔ±ÜÃâ¶à¸öÏß³ÌÕùÓÃÓÐÏÞ×ÊÔ´¶øµ¼ÖÂÓ¦ÓÃϵͳËÀ»ú»òÕß±ÀÀ£¡£

ΪÁËÏ̶߳ÔÓÚ²Ù×÷ϵͳºÍÓû§µÄÖØÒªÐÔÇø·Ö¿ª£¬Java¶¨ÒåÁËÏ̵߳ÄÓÅÏȼ¶²ßÂÔ¡£Java½«Ï̵߳ÄÓÅÏȼ¶·ÖΪ10¸öµÈ¼¶£¬·Ö±ðÓÃ1-10Ö®¼äµÄÊý×Ö±íʾ¡£Êý×ÖÔ½´ó±íÃ÷Ï̵߳ļ¶±ðÔ½¸ß¡£ÏàÓ¦µØ£¬ÔÚThreadÀàÖж¨ÒåÁ˱íʾÏß³Ì×îµÍ¡¢×î¸ßºÍÆÕͨÓÅÏȼ¶µÄ³ÉÔ±±äÁ¿MIN_PRIORITY¡¢ MAX_PRIORITYºÍNORMAL_PRIORITY£¬´ú±íµÄÓÅÏȼ¶µÈ¼¶·Ö±ðΪ1¡¢10ºÍ5¡£µ±Ò»¸öÏ̶߳ÔÏó±»´´½¨Ê±£¬ÆäĬÈϵÄÏß³ÌÓÅÏȼ¶ÊÇ5¡£

ΪÁË¿ØÖÆÏ̵߳ÄÔËÐвßÂÔ£¬Java¶¨ÒåÁËÏ̵߳÷¶ÈÆ÷À´¼à¿ØϵͳÖд¦ÓÚ¾ÍÐ÷״̬µÄËùÓÐÏ̡߳£Ï̵߳÷¶ÈÆ÷°´ÕÕÏ̵߳ÄÓÅÏȼ¶¾ö¶¨ÄǸöÏß³ÌͶÈë´¦ÀíÆ÷ÔËÐС£ÔÚ¶à¸öÏ̴߳¦ÓÚ¾ÍÐ÷״̬µÄÌõ¼þÏ£¬¾ßÓиßÓÅÏȼ¶µÄÏ̻߳áÔÚµÍÓÅÏȼ¶Ïß³Ì֮ǰµÃµ½Ö´ÐС£Ï̵߳÷¶ÈÆ÷ͬÑù²ÉÓÃ"ÇÀռʽ"²ßÂÔÀ´µ÷¶ÈÏß³ÌÖ´ÐУ¬¼´µ±Ç°Ïß³ÌÖ´Ðйý³ÌÖÐÓнϸßÓÅÏȼ¶µÄÏ߳̽øÈë¾ÍÐ÷״̬£¬Ôò¸ßÓÅÏȼ¶µÄÏß³ÌÁ¢¼´±»µ÷¶ÈÖ´ÐС£¾ßÓÐÏàͬÓÅÏȼ¶µÄËùÓÐÏ̲߳ÉÓÃÂÖתµÄ·½Ê½À´¹²Í¬·ÖÅäCPUʱ¼äƬ¡£

ÔÚÓ¦ÓóÌÐòÖÐÉèÖÃÏß³ÌÓÅÏȼ¶µÄ·½·¨ºÜ¼òµ¥£¬ÔÚ´´½¨Ï̶߳ÔÏóÖ®ºó¿ÉÒÔµ÷ÓÃÏ̶߳ÔÏóµÄsetPriority·½·¨¸Ä±ä¸ÃÏ̵߳ÄÔËÐÐÓÅÏȼ¶£¬Í¬Ñù¿ÉÒÔµ÷ÓÃgetPriority·½·¨»ñÈ¡µ±Ç°Ï̵߳ÄÓÅÏȼ¶¡£

ÔÚJava ÖбȽÏÌØÊâµÄÏß³ÌÊDZ»³ÆΪÊØ»¤£¨Daemon£©Ï̵߳ĵͼ¶±ðÏ̡߳£Õâ¸öÏ߳̾ßÓÐ×îµÍµÄÓÅÏȼ¶£¬ÓÃÓÚΪϵͳÖеÄÆäËü¶ÔÏóºÍÏß³ÌÌṩ·þÎñ¡£½«Ò»¸öÓû§Ïß³ÌÉèÖÃΪÊØ»¤Ï̵߳ķ½Ê½ÊÇÔÚÏ̶߳ÔÏó´´½¨Ö®Ç°µ÷ÓÃÏ̶߳ÔÏóµÄsetDaemon·½·¨¡£µäÐ͵ÄÊØ»¤Ïß³ÌÀý×ÓÊÇJVMÖеÄϵͳ×ÊÔ´×Ô¶¯»ØÊÕỊ̈߳¬ËüʼÖÕÔڵͼ¶±ðµÄ״̬ÖÐÔËÐУ¬ÓÃÓÚʵʱ¼à¿ØºÍ¹ÜÀíϵͳÖеĿɻØÊÕ×ÊÔ´¡£

Ï̷߳Ö×é¹ÜÀí

Java¶¨ÒåÁËÔÚ¶àÏß³ÌÔËÐÐϵͳÖеÄÏß³Ì×飨ThreadGroup£©¶ÔÏó£¬ÓÃÓÚʵÏÖ°´ÕÕÌض¨¹¦ÄܶÔÏ߳̽øÐм¯ÖÐʽ·Ö×é¹ÜÀí¡£Óû§´´½¨µÄÿ¸öÏ߳̾ùÊôÓÚijÏß³Ì×飬Õâ¸öÏß³Ì×é¿ÉÒÔÔÚÏ̴߳´½¨Ê±Ö¸¶¨£¬Ò²¿ÉÒÔ²»Ö¸¶¨Ïß³Ì×éÒÔʹ¸ÃÏ̴߳¦ÓÚĬÈϵÄÏß³Ì×éÖ®ÖС£µ«ÊÇ£¬Ò»µ©Ï̼߳ÓÈëijÏß³Ì×飬¸ÃÏ߳̾ÍÒ»Ö±´æÔÚÓÚ¸ÃÏß³Ì×éÖÐÖ±ÖÁÏß³ÌËÀÍö£¬²»ÄÜÔÚÖÐ;¸Ä±äÏß³ÌËùÊôµÄÏß³Ì×é¡£

µ±JavaµÄApplicationÓ¦ÓóÌÐòÔËÐÐʱ£¬JVM´´½¨Ãû³ÆΪmainµÄÏß³Ì×é¡£³ý·Çµ¥¶ÀÖ¸¶¨£¬ÔÚ¸ÃÓ¦ÓóÌÐòÖд´½¨µÄÏ߳̾ùÊôÓÚmainÏß³Ì×é¡£ÔÚmainÏß³Ì×éÖпÉÒÔ´´½¨ÆäËüÃû³ÆµÄÏß³Ì×é²¢½«ÆäËüÏ̼߳ÓÈëµ½¸ÃÏß³Ì×éÖУ¬ÒÀ´ËÀàÍÆ£¬¹¹³ÉÏ̺߳ÍÏß³Ì×éÖ®¼äµÄÊ÷Ð͹ÜÀíºÍ¼Ì³Ð¹Øϵ¡£

ÓëÏß³ÌÀàËÆ£¬¿ÉÒÔÕë¶ÔÏß³Ì×é¶ÔÏó½øÐÐÏß³Ì×éµÄµ÷¶È¡¢×´Ì¬¹ÜÀíÒÔ¼°ÓÅÏȼ¶ÉèÖõȡ£ÔÚ¶ÔÏß³Ì×é½øÐйÜÀí¹ý³ÌÖУ¬¼ÓÈ뵽ijÏß³Ì×éÖеÄËùÓÐÏ߳̾ù±»¿´×÷ͳһµÄ¶ÔÏó¡£

С½á

±¾ÎÄÕë¶ÔJavaƽ̨ÖÐÏ̵߳ÄÐÔÖʺÍÓ¦ÓóÌÐòµÄ¶àÏ̲߳ßÂÔ½øÐÐÁË·ÖÎöºÍ½²½â¡£ÓëÆäËü²Ù×÷ϵͳ»·¾³²»Í¬£¬JavaÔËÐл·¾³ÖеÄÏß³ÌÀàËÆÓÚ¶àÓû§¡¢¶àÈÎÎñ²Ù×÷ϵͳ»·¾³ÏµĽø³Ì£¬µ«ÔÚ½ø³ÌºÍÏ̵߳ÄÔËÐм°´´½¨·½Ê½µÈ·½Ã棬½ø³ÌÓëJavaÏ߳̾ßÓÐÃ÷ÏÔÇø±ð¡£

Unix ²Ù×÷ϵͳ»·¾³Ï£¬Ó¦ÓóÌÐò¿ÉÒÔÀûÓÃforkº¯Êý´´½¨×Ó½ø³Ì£¬µ«×Ó½ø³ÌÓë¸ÃÓ¦ÓóÌÐò½ø³ÌÓµÓжÀÁ¢µÄµØÖ·¿Õ¼ä¡¢ÏµÍ³×ÊÔ´ºÍ´úÂëÖ´Ðе¥Ôª£¬²¢ÇÒ½ø³ÌµÄµ÷¶ÈÊÇÓɲÙ×÷ϵͳÀ´Íê³ÉµÄ£¬Ê¹µÃÔÚÓ¦Óýø³ÌÖ®¼ä½øÐÐͨÐźÍÏß³ÌЭµ÷Ïà¶Ô¸´ÔÓ¡£¶øJavaÓ¦ÓóÌÐòÖеĶàÏß³ÌÔòÊǹ²ÏíͬһӦÓÃϵͳ×ÊÔ´µÄ¶à¸ö²¢ÐдúÂëÖ´ÐÐÌ壬Ïß³ÌÖ®¼äµÄͨÐźÍЭµ÷·½·¨Ïà¶Ô¼òµ¥¡£

¿ÉÒÔ˵£ºJavaÓïÑÔ¶ÔÓ¦ÓóÌÐò¶àÏß³ÌÄÜÁ¦µÄÖ§³ÖÔöÇ¿ÁËJava×÷ΪÍøÂç³ÌÐòÉè¼ÆÓïÑÔµÄÓÅÊÆ£¬ÎªÊµÏÖ·Ö²¼Ê½Ó¦ÓÃϵͳÖжà¿Í»§¶ËµÄ²¢·¢·ÃÎÊÒÔ¼°Ìá¸ß·þÎñÆ÷µÄÏìӦЧÂʵ춨¼áʵ»ù´¡¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ