Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

javaÖеÄËø³ØºÍµÈ´ý³Ø

ÔÚjavaÖУ¬Ã¿¸ö¶ÔÏó¶¼ÓÐÁ½¸ö³Ø£¬Ëø(monitor)³ØºÍµÈ´ý³Ø
wait() ,notifyAll(),notify() Èý¸ö·½·¨¶¼ÊÇObjectÀàÖеķ½·¨.
Ëø³Ø:¼ÙÉèÏß³ÌAÒѾ­ÓµÓÐÁËij¸ö¶ÔÏó(×¢Òâ:²»ÊÇÀà)µÄËø£¬¶øÆäËüµÄÏß³ÌÏëÒªµ÷ÓÃÕâ¸ö¶ÔÏóµÄij¸ösynchronized·½·¨(»òÕßsynchronized¿é)£¬ÓÉÓÚÕâЩÏß³ÌÔÚ½øÈë¶ÔÏóµÄsynchronized·½·¨Ö®Ç°±ØÐëÏÈ»ñµÃ¸Ã¶ÔÏóµÄËøµÄÓµÓÐȨ£¬µ«ÊǸöÔÏóµÄËøÄ¿Ç°Õý±»Ïß³ÌAÓµÓУ¬ËùÒÔÕâЩÏ߳̾ͽøÈëÁ˸öÔÏóµÄËø³ØÖС£
µÈ´ý³Ø:¼ÙÉèÒ»¸öÏß³ÌAµ÷ÓÃÁËij¸ö¶ÔÏóµÄwait()·½·¨£¬Ïß³ÌA¾Í»áÊͷŸöÔÏóµÄËø(ÒòΪwait()·½·¨±ØÐë³öÏÖÔÚsynchronizedÖУ¬ÕâÑù×ÔÈ»ÔÚÖ´ÐÐwait()·½·¨Ö®Ç°Ïß³ÌA¾ÍÒѾ­ÓµÓÐÁ˸öÔÏóµÄËø)£¬Í¬Ê±Ïß³ÌA¾Í½øÈëµ½Á˸öÔÏóµÄµÈ´ý³ØÖС£Èç¹ûÁíÍâµÄÒ»¸öÏ̵߳÷ÓÃÁËÏàͬ¶ÔÏóµÄnotifyAll()·½·¨£¬ÄÇô´¦ÓڸöÔÏóµÄµÈ´ý³ØÖеÄÏ߳̾ͻáÈ«²¿½øÈë¸Ã¶ÔÏóµÄËø³ØÖУ¬×¼±¸Õù¶áËøµÄÓµÓÐȨ¡£Èç¹ûÁíÍâµÄÒ»¸öÏ̵߳÷ÓÃÁËÏàͬ¶ÔÏóµÄnotify()·½·¨£¬ÄÇô½ö½öÓÐÒ»¸ö´¦ÓڸöÔÏóµÄµÈ´ý³ØÖеÄÏß³Ì(Ëæ»ú)»á½øÈë¸Ã¶ÔÏóµÄËø³Ø.
ÏÂÃæÍ¨¹ýÒ»¸öÀý×ÓÀ´ËµÃ÷:
ÒªÇóдÁ½¸öỊ̈߳¬Ò»¸öÏ߳̽«Ä³¸ö¶ÔÏóµÄij¸ö³ÉÔ±±äÁ¿µÄÖµ¼Ó1£¬¶øÁíÍâÒ»¸öÏ߳̽«Õâ¸ö³ÉÔ±±äÁ¿µÄÖµ¼õ1.ʹµÃ¸Ã±äÁ¿µÄֵʼÖÕ´¦ÓÚ[0,2].³õʼֵΪ0.
package com.tju;
class Target
{
private int count;

public synchronized void increase()
{
if(count == 2)
{
try
{
wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
count++;
System.out.println(Thread.currentThread().getName() + ":" + count);
notify();
}

public synchronized void decrease()
{
if(count == 0)
{
try
{
//µÈ´ý£¬ÓÉÓÚDecreaseÏ̵߳÷Óõĸ÷½·¨,
//ËùÒÔDecreaseÏ߳̽øÈë¶ÔÏót(mainº¯ÊýÖÐʵÀý»¯µÄ)µÄµÈ´ý³Ø£¬²¢ÇÒÊͷŶÔÏótµÄËø
wait();//ObjectÀàµÄ·½·¨
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
count--;
System.out.println(Thread.currentThread().getName() + ":" + count);

//»½ÐÑÏß³ÌIncrease£¬IncreaseÏ̴߳ӵȴý³Øµ½Ëø³Ø
notify();
}
}
class Increase extends Thread
{
private Target t;

public Increase(Target t)
{
this.t = t;
}
@Override
public void run()
{
for(int i = 0 ;i < 30; i++)
{
try
{


Ïà¹ØÎĵµ£º

javaʱ¼ä¶¯Ì¬ÏÔʾ Á½ÖÖ·½·¨

ʱ¼ä¶¯Ì¬ÏÔʾ
1.·½·¨Ò» ÓÃTimerTask
ÀûÓÃjava.util.TimerºÍjava.util.TimerTaskÀ´×ö¶¯Ì¬¸üУ¬±Ï¾¹Ã¿´Î¸üпÉÒÔ¿´×÷ÊǼÆÊ±1Ãë·¢ÉúÒ»´Î¡£
´úÂëÈçÏ£º
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util ......

Java ÒÀÀµ×¢É乿·¶£¨JSR

JCP SE/EE Ö´ÐÐίԱ»á
Õýʽ½ÓÊÜÁË
JSR 330
—— Dependency Injection for Java¡£¸Ã¹æ·¶ÓÚ ½ñÄê 5 Ô 9 ÈÕ
ÓÉ Google µÄ Bob Lee ÒÔ¼° SpringSource µÄ Rod Johnson ×÷Ϊ¹æ·¶Áìµ¼Ìá½»¸ø JCP£¬ÏÖÔÚÒѾ­Õýʽ·¢²¼£¬²»µÃ²»¸Ð̾¸Ã¹æ·¶±ê×¼»¯¹ý³ÌÖ®¿ì¡£ÔÚ ×îÖÕͶƱ½á¹ûÖÐ
£¬14 Ʊͨ¹ý£¬1 ƱδͶ£¬1 Ʊ·´¶Ô¡£
J ......

JDKÖаüº¬µÄ³£ÓÃJavaµ÷ÊÔ¹¤¾ß

1  JDK5.0°üÀ¨µÄµ÷ÊÔ¹¤¾ß
ÎÒÃÇÔÚÕâÀï¶ÔJDK5.0µÄµ÷ÊÔ¹¤¾ß×ö´óÖµĸÅÄîÐԵĽéÉÜ£¬È»ºóÏ£Íûͨ¹ý½éÉÜÎÒ×Ô¼ºÔÚʵ¼Ê¹¤×÷ÖÐʹÓÃÕâЩ¹¤¾ß½â¾öÎÊÌâµÄʵÀýÀ´Èôó¼Ò¶ÔÕâЩ¹¤¾ßÓиüÉîÈëµÄÁ˽⡣
 
¡¡JDK5.0ÀïÃæ¼ÓÈëÁËjstack, jconsole, jinfo, jmap, jdb, jstat, jps, ÏÂÃæ¶ÔÕâЩ¹¤¾ß×ö¼òµ¥½éÉÜ£º
¡¡jstack -- Èç¹ûjava³Ì ......

javaÓëÍøÂç


1 ÍøÂçͨÐŵı¾ÖÊÊǽø³Ì¼äͨÐÅ¡£   
2 TcpЭÒéºÍUDPЭÒé
TCP£º¿ªÏú´ó£¬ÓÃÓÚ¿É¿¿ÐÔÒªÇó¸ßµÄ³¡ºÏ¡£
TCPµÄ¹ý³ÌÏ൱ÓÚ´òµç»°µÄ¹ý³Ì
UDP£ºÓÃÔÚ¶ÔʵʱÐÔÒªÇó±È½Ï¸ßµÄ³¡ºÏ¡£
UDPµÄ¹ý³ÌÏ൱ÓÚдÐŵĹý³Ì¡£
×¢Ò⣺socketÊÇÌ×½Ó×Ö£¬ipºÍport£¨¶Ë¿ÚºÅ 0~65535¸ö¶Ë¿Ú£¬Ò»¸ö¶Ë¿ÚÖ»ÄÜÓÐÒ»¸ö½ø³Ì£©
3£¬   ......

¹ØÓÚjavaÖбäÁ¿µÄ³õʼ»¯µÄÎÊÌâ

 Ê×ÏÈһЩ±»³õʼ»¯¶ÔÏóµÄ¸ÅÄ
Àà±äÁ¿£¨Àྲ̬³ÉÔ±£©£º Àà±»¼ÓÔØÊ±²úÉú£»ËüµÄÉú´æÆÚÊÇÀàµÄÉú´æÆÚ£»×Ô¶¯³õʼ»¯£¨Àà±»¼ÓÔØ£©
³ÉÔ±±äÁ¿£¨Àà³ÉÔ±£©£º  ÔÚʹÓÃnew´´½¨¸ÃÀàʵÀýʱ²úÉú£»ËüµÄÉú´æÆÚÓë¸ÃÀàʵÀý¶ÔÏóµÄÉú´æÆÚÏàͬ£»
×Ô¶¯³õʼ»¯£¨¹¹Ôì·½·¨±»µ÷Óã©
¾Ö²¿±äÁ¿£¨ÀàµÄ·½·¨ÖеıäÁ¿£©£º  ¸Ã·½·¨±»µ÷ÓÃÊ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ