JavaỊ̈߳º¸ÅÄîÓëÔÀí
SCJP5ѧϰ±Ê¼Ç
Ò»¡¢²Ù×÷ϵͳÖÐÏ̺߳ͽø³ÌµÄ¸ÅÄî
ÏÖÔڵIJÙ×÷ϵͳÊǶàÈÎÎñ²Ù×÷ϵͳ¡£¶àÏß³ÌÊÇʵÏÖ¶àÈÎÎñµÄÒ»ÖÖ·½Ê½¡£
½ø³ÌÊÇÖ¸Ò»¸öÄÚ´æÖÐÔËÐеÄÓ¦ÓóÌÐò£¬Ã¿¸ö½ø³Ì¶¼ÓÐ×Ô¼º¶ÀÁ¢µÄÒ»¿éÄÚ´æ¿Õ¼ä£¬Ò»¸ö½ø³ÌÖпÉÒÔÆô¶¯¶à¸öÏ̡߳£±ÈÈçÔÚWindowsϵͳÖУ¬Ò»¸öÔËÐеÄexe¾ÍÊÇÒ»¸ö½ø³Ì¡£
Ïß³ÌÊÇÖ¸½ø³ÌÖеÄÒ»¸öÖ´ÐÐÁ÷³Ì£¬Ò»¸ö½ø³ÌÖпÉÒÔÔËÐжà¸öÏ̡߳£±ÈÈçjava.exe½ø³ÌÖпÉÒÔÔËÐкܶàÏ̡߳£Ïß³Ì×ÜÊÇÊôÓÚij¸ö½ø³Ì£¬½ø³ÌÖеĶà¸öÏ̹߳²Ïí½ø³ÌµÄÄÚ´æ¡£
“ͬʱ”Ö´ÐÐÊÇÈ˵ĸоõ£¬ÔÚÏß³ÌÖ®¼äʵ¼ÊÉÏÂÖ»»Ö´ÐС£
¶þ¡¢JavaÖеÄÏß³Ì
ÔÚJavaÖУ¬“Ïָ߳̔Á½¼þ²»Í¬µÄÊÂÇ飺
1¡¢java.lang.ThreadÀàµÄÒ»¸öʵÀý£»
2¡¢Ï̵߳ÄÖ´ÐС£
ʹÓÃjava.lang.ThreadÀà»òÕßjava.lang.Runnable½Ó¿Ú±àд´úÂëÀ´¶¨Ò塢ʵÀý»¯ºÍÆô¶¯ÐÂÏ̡߳£
Ò»¸öThreadÀàʵÀýÖ»ÊÇÒ»¸ö¶ÔÏó£¬ÏñJavaÖеÄÈÎºÎÆäËû¶ÔÏóÒ»Ñù£¬¾ßÓбäÁ¿ºÍ·½·¨£¬ÉúËÀÓÚ¶ÑÉÏ¡£
JavaÖУ¬Ã¿¸öÏ̶߳¼ÓÐÒ»¸öµ÷ÓÃÕ»£¬¼´Ê¹²»ÔÚ³ÌÐòÖд´½¨ÈκÎеÄỊ̈߳¬Ïß³ÌÒ²ÔÚºǫ́ÔËÐÐ×Å¡£
Ò»¸öJavaÓ¦ÓÃ×ÜÊÇ´Ómain()·½·¨¿ªÊ¼ÔËÐУ¬mian()·½·¨ÔËÐÐÔÚÒ ......
JavaỊ̈߳º´´½¨ÓëÆô¶¯
SCJP5ѧϰ±Ê¼Ç
Ò»¡¢¶¨ÒåÏß³Ì
1¡¢À©Õ¹java.lang.ThreadÀà¡£
´ËÀàÖÐÓиörun()·½·¨£¬Ó¦¸Ã×¢ÒâÆäÓ÷¨£º
public void run()
Èç¹û¸ÃÏß³ÌÊÇʹÓöÀÁ¢µÄ Runnable ÔËÐжÔÏó¹¹ÔìµÄ£¬Ôòµ÷Óøà Runnable ¶ÔÏóµÄ run ·½·¨£»·ñÔò£¬¸Ã·½·¨²»Ö´ÐÐÈκβÙ×÷²¢·µ»Ø¡£
Thread µÄ×ÓÀàÓ¦¸ÃÖØÐ´¸Ã·½·¨¡£
2¡¢ÊµÏÖjava.lang.Runnable½Ó¿Ú¡£
void run()
ʹÓÃʵÏÖ½Ó¿Ú Runnable µÄ¶ÔÏó´´½¨Ò»¸öÏß³Ìʱ£¬Æô¶¯¸ÃÏ߳̽«µ¼ÖÂÔÚ¶ÀÁ¢Ö´ÐеÄÏß³ÌÖе÷ÓöÔÏóµÄ run ·½·¨¡£
·½·¨ run µÄ³£¹æÐ¶¨ÊÇ£¬Ëü¿ÉÄÜÖ´ÐÐÈκÎËùÐèµÄ²Ù×÷¡£
¶þ¡¢ÊµÀý»¯Ïß³Ì
1¡¢Èç¹ûÊÇÀ©Õ¹java.lang.ThreadÀàµÄỊ̈߳¬ÔòÖ±½Ónew¼´¿É¡£
2¡¢Èç¹ûÊÇʵÏÖÁËjava.lang.Runnable½Ó¿ÚµÄÀ࣬ÔòÓÃThreadµÄ¹¹Ôì·½·¨£º
Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
Èý¡¢Æô¶¯Ïß³Ì
ÔÚÏ̵߳ÄThread¶ÔÏóÉϵ÷ ......
JavaỊ̈߳ºÏß³ÌջģÐÍÓëÏ̵߳ıäÁ¿
SCJP5ѧϰ±Ê¼Ç
ÒªÀí½âÏ̵߳÷¶ÈµÄÔÀí£¬ÒÔ¼°Ïß³ÌÖ´Ðйý³Ì£¬±ØÐëÀí½âÏß³ÌջģÐÍ¡£
Ïß³ÌÕ»ÊÇָijʱ¿ÌʱÄÚ´æÖÐÏ̵߳÷¶ÈµÄÕ»ÐÅÏ¢£¬µ±Ç°µ÷Óõķ½·¨×ÜÊÇλÓÚÕ»¶¥¡£Ïß³ÌÕ»µÄÄÚÈÝÊÇËæ×ųÌÐòµÄÔËÐж¯Ì¬±ä»¯µÄ£¬Òò´ËÑо¿Ïß³ÌÕ»±ØÐëÑ¡ÔñÒ»¸öÔËÐеÄʱ¿Ì£¨Êµ¼ÊÉÏÖ¸´úÂëÔËÐе½Ê²Ã´µØ·½)¡£
ÏÂÃæÍ¨¹ýÒ»¸öʾÀýÐԵĴúÂë˵Ã÷Ị̈߳¨µ÷Óã©Õ»µÄ±ä»¯¹ý³Ì¡£
Õâ·ùͼÃèÊöÔÚ´úÂëÖ´Ðе½Á½¸ö²»Í¬Ê±¿Ì1¡¢2ʱºò£¬ÐéÄâ»úÏ̵߳÷ÓÃջʾÒâͼ¡£
µ±³ÌÐòÖ´Ðе½t.start();ʱºò£¬³ÌÐò¶à³öÒ»¸ö·ÖÖ§£¨Ôö¼ÓÁËÒ»¸öµ÷ÓÃÕ»B£©£¬ÕâÑù£¬Õ»A¡¢Õ»B²¢ÐÐÖ´ÐС£
´ÓÕâÀï¾Í¿ÉÒÔ¿´³ö·½·¨µ÷ÓúÍÏß³ÌÆô¶¯µÄÇø±ðÁË¡£
......
JavaỊ̈߳ºÏß³Ì״̬µÄת»»
SCJP5ѧϰ±Ê¼Ç
Ò»¡¢Ïß³Ì״̬
Ï̵߳Ä״̬ת»»ÊÇÏ߳̿ØÖƵĻù´¡¡£Ïß³Ì״̬×ܵĿɷÖΪÎå´ó״̬£º·Ö±ðÊÇÉú¡¢ËÀ¡¢¿ÉÔËÐС¢ÔËÐС¢µÈ´ý/×èÈû¡£ÓÃÒ»¸öͼÀ´ÃèÊöÈçÏ£º
1¡¢ÐÂ״̬£ºÏ̶߳ÔÏóÒѾ´´½¨£¬»¹Ã»ÓÐÔÚÆäÉϵ÷ÓÃstart()·½·¨¡£
2¡¢¿ÉÔËÐÐ״̬£ºµ±Ïß³ÌÓÐ×ʸñÔËÐУ¬µ«µ÷¶È³ÌÐò»¹Ã»ÓаÑËüÑ¡¶¨ÎªÔËÐÐÏß³ÌʱÏß³ÌËù´¦µÄ״̬¡£µ±start()·½·¨µ÷ÓÃʱ£¬Ïß³ÌÊ×ÏȽøÈë¿ÉÔËÐÐ״̬¡£ÔÚÏß³ÌÔËÐÐÖ®ºó»òÕß´Ó×èÈû¡¢µÈ´ý»ò˯Ãß״̬»ØÀ´ºó£¬Ò²·µ»Øµ½¿ÉÔËÐÐ״̬¡£
3¡¢ÔËÐÐ״̬£ºÏ̵߳÷¶È³ÌÐò´Ó¿ÉÔËÐгØÖÐÑ¡ÔñÒ»¸öÏß³Ì×÷Ϊµ±Ç°Ïß³ÌʱÏß³ÌËù´¦µÄ״̬¡£ÕâÒ²ÊÇÏ߳̽øÈëÔËÐÐ״̬µÄΨһһÖÖ·½Ê½¡£
4¡¢µÈ´ý/×èÈû/˯Ãß״̬£ºÕâÊÇÏß³ÌÓÐ×ʸñÔËÐÐʱËüËù´¦µÄ״̬¡£Êµ¼ÊÉÏÕâ¸öÈý״̬×éºÏΪһÖÖ£¬Æä¹²Í¬µãÊÇ£ºÏß³ÌÈÔ¾ÉÊÇ»îµÄ£¬µ«Êǵ±Ç°Ã»ÓÐÌõ¼þÔËÐС£»»¾ä»°Ëµ£¬ËüÊÇ¿ÉÔËÐе쬵«ÊÇÈç¹ûij¼þʼþ³öÏÖ£¬Ëû¿ÉÄÜ·µ»Øµ½¿ÉÔËÐÐ״̬¡£
5¡¢ËÀÍö̬£ºµ±Ï̵߳Ärun()·½·¨Íê³Éʱ¾ÍÈÏΪËüËÀÈ¥¡£Õâ¸öÏ̶߳ÔÏóÒ²ÐíÊÇ»îµÄ£¬µ«ÊÇ£¬ËüÒѾ²»ÊÇÒ»¸öµ¥¶ÀÖ´ÐеÄÏ̡߳£Ïß³ÌÒ»µ©ËÀÍö£¬¾Í²»Äܸ´Éú¡£ Èç¹ûÔÚÒ»¸öËÀÈ¥µÄÏß³ÌÉϵ÷ÓÃstart()·½·¨£¬ ......
JavaỊ̈߳ºÏ̵߳Äͬ²½ÓëËø
Ò»¡¢Í¬²½ÎÊÌâÌá³ö
Ï̵߳Äͬ²½ÊÇΪÁË·ÀÖ¹¶à¸öÏ̷߳ÃÎÊÒ»¸öÊý¾Ý¶ÔÏóʱ£¬¶ÔÊý¾ÝÔì³ÉµÄÆÆ»µ¡£
ÀýÈ磺Á½¸öÏß³ÌThreadA¡¢ThreadB¶¼²Ù×÷ͬһ¸ö¶ÔÏóFoo¶ÔÏ󣬲¢ÐÞ¸ÄFoo¶ÔÏóÉϵÄÊý¾Ý¡£
public class Foo {
private int x = 100;
public int getX() {
return x;
}
public int fix(int y) {
x = x - y;
return x;
}
}
public class MyRunnable implements Runnable {
private Foo foo = new Foo();
public static void main(String[] args) {
MyRunnable r = new MyRunnable();
Thread ta = new Thread(r, "Thread-A");
&n ......
JavaỊ̈߳ºÏ̵߳Ľ»»¥
SCJP5ѧϰ±Ê¼Ç
Ï߳̽»»¥ÊDZȽϸ´ÔÓµÄÎÊÌ⣬SCJPÒªÇ󲻺ܻù´¡£º¸ø¶¨Ò»¸ö³¡¾°£¬±àд´úÂëÀ´Ç¡µ±Ê¹Óõȴý¡¢Í¨ÖªºÍ֪ͨËùÓÐÏ̡߳£
Ò»¡¢Ï߳̽»»¥µÄ»ù´¡ÖªÊ¶
SCJPËùÒªÇóµÄÏ߳̽»»¥ÖªÊ¶µãÐèÒª´Ójava.lang.ObjectµÄÀàµÄÈý¸ö·½·¨À´Ñ§Ï°£º
void notify()
»½ÐÑÔڴ˶ÔÏó¼àÊÓÆ÷ÉϵȴýµÄµ¥¸öÏ̡߳£
void notifyAll()
»½ÐÑÔڴ˶ÔÏó¼àÊÓÆ÷ÉϵȴýµÄËùÓÐÏ̡߳£
void wait()
µ¼Öµ±Ç°µÄÏ̵߳ȴý£¬Ö±µ½ÆäËûÏ̵߳÷Óô˶ÔÏóµÄ notify() ·½·¨»ò notifyAll() ·½·¨¡£
µ±È»£¬wait()»¹ÓÐÁíÍâÁ½¸öÖØÔØ·½·¨£º
void wait(long timeout)
µ¼Öµ±Ç°µÄÏ̵߳ȴý£¬Ö±µ½ÆäËûÏ̵߳÷Óô˶ÔÏóµÄ notify() ·½·¨»ò notifyAll() ·½·¨£¬»òÕß³¬¹ýÖ¸¶¨µÄʱ¼äÁ¿¡£
void wait(long timeout, int nanos)
  ......