synchronizedµÄÒ»¸ö¼òµ¥Àý×Ó
public class TextThread
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO ×Ô¶¯Éú³É·½·¨´æ¸ù
TxtThread tt = new TxtThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
}
}
class TxtThread implements Runnable
{
int num = 100;
String str = new String();
public void run()
{
while (true)
{
synchronized(str)
{
if (num>0)
{
try
{
Thread.sleep(10);
}
catch( ......
ʼþÔ´¸ºÔð²úÉúʼþ
ʼþÀࣺ¶¨ÒåʼþµÄÌØÕ÷£»
¼àÌýÆ÷½Ó¿Ú£º¶¨Òå¼àÌýÆ÷Ó¦¸ÃʵÏֵŦÄÜ£»
¼àÌýÆ÷£ºÊµÏÖ¼àÌýÆ÷½Ó¿Ú£¬¼àÌýʼþµÄ·¢Éú²¢×÷³öÏìÓ¦£»
ËùÓеÄʼþÀà±ØÐë¼Ì³ÐJavaʼþ»ùÀ࣬¼´java.util.EventObject£»EventObject(Object source)ÊÇEventObjectΨһµÄ¹¹Ôì·½·¨£¬ÕâÒâζ×ÅËùÓÐʼþ±ØÐëÔÚʵÀý»¯Ê±¾ÍÖ¸¶¨Ê¼þÔ´£»EventObjectÀàÌṩÁËgetSource()·½·¨À´»ñȡʼþÔ´£»
¶¨ÒåÁËʼþÀàºó£¬²úÉúÒ»¸öʼþ£¬¾ÍÊÇÉú³ÉʼþÀàµÄÒ»¸öʵÀý¡£
³ýÁËʼþÔ´£¬¸´ÔÓµÄʼþÀà´úÂë¿ÉÒÔº¬ÓÐÆäËûÊôÐÔ¡¢·½·¨£¬°üº¬¸ü¶àµÄÐÅÏ¢£¬ÈçʼþµÄÃû³Æ¡¢Ê¼þ·¢ÉúµÄʱ¼ä¡¢Ê¼þËùÊôÀà±ðÒÔ¼°Ê¼þµÄÃèÊöµÈµÈ
¼àÌýÆ÷½Ó¿Ú¶¨ÒåÁËÒ»¸öÀàÒª³ÉΪ¼àÌýÆ÷±ØÐë¾ß±¸µÄ¹¦ÄÜ¡£ËùÓеļàÌýÆ÷½Ó¿ÚÒ²¶¼±ØÐë¼Ì³Ð¼àÌýÆ÷½Ó¿Ú»ùÀàjava.util.EventListener£»EventListener±¾ÉíûÓж¨ÒåÈκη½·¨£¬ËüÖ»ÊÇÒ»¸ö±êÖ¾½Ó¿Ú£¬ÓÃÀ´±íÃ÷ËùÓм̳Ð×ÔEventListenerµÄ½Ó¿ÚÊôÓÚ¼àÌýÆ÷½Ó¿Ú¡£
¼àÌýÆ÷½Ó¿Ú¶¨ÒåÁ˼àÌýÆ÷±ØÐëʵÏֵķ½·¨¡£¿ÉÒÔÔÚ¼àÌýÆ÷½Ó¿ÚÖж¨ÒåÈÎÒâ¶àµÄʼþ´¦Àí·½·¨£¬È¡¾öÓÚÓ¦ÓÃËùÐ裬ʼþ´¦Àí·½·¨ÒÔʼþ¶ÔÏó×÷ΪÈë¿Ú²ÎÊý£¬°üº¬¶Ôʼþ½øÐд¦ÀíµÄ´úÂ룬·½·¨Ãû³ÆÈÎÒ⣬ÈçprocessEvent»òÕßhandleEventÖ®Àà¡£
¼àÌýÆ÷ÊǼàÌýÆ÷½Ó¿ÚµÄʵ ......
javaÖеÄʼþ»úÖÆµÄ²ÎÓëÕßÓÐ3ÖÖ½ÇÉ«£º
1.event object£º¾ÍÊÇʼþ²úÉúʱ¾ßÌåµÄ“ʼþ”£¬ÓÃÓÚlistenerµÄÏàÓ¦µÄ·½·¨Ö®ÖУ¬×÷Ϊ²ÎÊý£¬Ò»°ã´æÔÚÓëlisternerµÄ·½·¨Ö®ÖÐ
2.event source£º¾ßÌåµÄ½ÓÊÜʼþµÄʵÌ壬±ÈÈç˵£¬Äãµã»÷Ò»¸öbutton£¬ÄÇôbutton¾ÍÊÇevent source£¬ÕâÑùÄã±ØÐëʹbutton¶ÔijЩʼþ½øÐÐÏàÓ¦£¬Äã¾ÍÐèҪע²áÌØ¶¨µÄlistener£¬±ÈÈç˵MouseEventÖ®ÖÐµÄ MouseClicked·½·¨£¬ÕâÊÇËû¾Í±ØÐëÓÐÁËadd·½·¨
3.event listener£º¾ßÌåµÄ¶Ô¼àÌýµÄʼþÀ࣬µ±ÓÐÆä¶ÔÓ¦µÄevent object²úÉúµÄʱºò£¬Ëü¾Íµ÷ÓÃÏàÓ¦µÄ·½·¨£¬½øÐд¦Àí¡£ÔÚwindows³ÌÐòÉè¼ÆÀï±ßÕâÖÖÏàӦʹÓÃcallback»úÖÆÀ´ÊµÏÖµÄ
ÏÈ¿´¿´jdkÌṩµÄevent°ü£º
public interface EventListener£ºËùÓÐʼþÕìÌýÆ÷½Ó¿Ú±ØÐëÀ©Õ¹µÄ±ê¼Ç½Ó¿Ú¡£
public class EventObject extends Object implements Serializable
ËùÓÐʼþ״̬¶ÔÏó¶¼½«´ÓÆäÅÉÉúµÄ¸ùÀà¡£ ËùÓÐ Event ÔÚ¹¹Ôìʱ¶¼ÒýÓÃÁ˶ÔÏó "source"£¬ÔÚÂß¼ÉÏÈÏΪ¸Ã¶ÔÏóÊÇ×î³õ·¢ÉúÓÐ¹Ø Event µÄ¶ÔÏó¡£
ÔÚJava2´¦Àíʼþʱ£¬Ã»ÓвÉÓÃdispatchEvent()-postEvent()-handleEvent()·½Ê½£¬²ÉÓÃÁ˼àÌýÆ÷À࣬ÿ¸öʼþÀà¶¼ÓÐÏà¹ØÁªµÄ¼àÌýÆ ......
×ªÔØ×Ôhttp://blog.csdn.net/yuekun1172006/archive/2007/06/02/1634878.aspx
Àà×°ÈëÆ÷ÊÇ JVM ÓÃÀ´×°ÈëÀàµÄÀ࣬Ëü¶ÔÓÚ Java ±à³ÌÊǷdz£ÖØÒªµÄÒ»¸ö¸ÅÄî¡£Ò»°ãÇé¿öÏ£¬³ÌÐòÔ±ÔÚ±àд³ÌÐòµÄʱºò¶¼¿ÉÒÔºöÂÔÀà×°ÈëÆ÷µÄ´æÔÚÐÔ¡£µ«ÊǶÔÓÚ·þÎñÆ÷¶Ë±à³Ì»òÕßÊÇÒ»Ð©ÌØÊâÇé¿öÏÂʱºò£¬ÉîÈëÁ˽âÀà×°ÈëÆ÷µÄ»úÖÆÒÔ¼°ÆäÔÚ²»Í¬Çé¿öϵÄʵÏÖ»¹ÊǷdz£±ØÒªµÄ¡£
Ê×ÏÈ£¬µ±Ò»¸ö JVM Æô¶¯µÄʱºò£¬Java ȱʡ¿ªÊ¼Ê¹ÓÃÈý¸öÀà×°ÈëÆ÷¡£ËüÃÇ·Ö±ðÊÇ£º
Òýµ¼£¨Bootstrap£©Àà×°ÈëÆ÷£»
À©Õ¹£¨Extension£©Àà×°ÈëÆ÷£»
ϵͳ£¨System£©Àà×°ÈëÆ÷£»
ËüÃÇ·Ö±ðʵÏÖÈçÏµĹ¦ÄÜ£º
Òýµ¼Àà×°ÈëÆ÷ÊÇÓñ¾µØ´úÂëʵÏÖµÄÀà×°ÈëÆ÷¡£Ëü¸ºÔ𽫠<Java_Runtime_Home>/lib
ÏÂÃæµÄÀà¿â¼ÓÔØµ½ÄÚ´æÖС£
À©Õ¹Àà×°ÈëÆ÷ÊÇÓÉ Sun µÄ ExtClassLoader ʵÏֵġ£Ëü¸ºÔ𽫠< Java_Runtime_Home >/lib/ext
»òÕßÓÉϵͳ±äÁ¿ java.ext.dir Ö¸¶¨Î»ÖÃÖеÄÀà¿â¼ÓÔØµ½ÄÚ´æÖС£
ϵͳÀà×°ÈëÆ÷ÓÖ½ÐÓ¦ÓóÌÐòÀà×°ÈëÆ÷£¬ÊÇÓÉ Sun µÄ AppClassLoader ʵÏֵġ£Ëü¸ºÔð½«ÏµÍ³Àà·¾¶£¨CLASSPATH£©ÖÐÖ¸¶¨µÄÀà¿â¼ÓÔØµ½ÄÚ´æÖС£
µ±
Ó¦ÓóÌÐòÐèÒª¼ÓÔØÄ³¸öÀൽÄÚ´æÖеÄʱºò£¬Àà×°ÈëÆ÷ÊÇÈçºÎ¹¤×÷µÄÄØ£¿Õâ¾ÍÉè¼Æµ½Àà×°ÈëÆ÷µÄÒ»¸öÖØÒª·½Ãæ ......
½üÀ´ÔÚ×öJAVAʱÓõ½ÎļþµÄѹËõÓë½âѹ,ÆäÖÐÅöµ½Á˸öÎÊÌâ:ÏÈÓÃJAVA´úÂë´ò°üºÃµÄJARÎļþ¾¹ýC#µÄzlib´¦Àíºó,¾¹È»²»ÄÜÐÞ¸Ä!
ÍøÉÏÕÒÁ˺ÃЩ´úÂë¶¼²»¿ÉÐÐ,JAVA´´½¨µÄJAR°üÔÚÐ޸ĵÄʱºò¿ÉÒÔ·¢ÏÖ¿ªÊ¼Óиö·¾¶·û'/'»ò'\',ËäÈ»ÔÚ´Ë¿ÉÒÔÐÞ¸ÄJARÎļþ,µ«ÊÇ×ܾõµÃÒþ»¼³öÔÚÕâ,ºóÀ´µÄÊÂʵҲ֤Ã÷ÁËÕâµã.²»¹ý»¹ºÃ,ºóÀ´ÕÒµ½Á˸ö²»´íµÄ´úÂë,±ÜÃâÁË´ËÏÖÏóµÄ·¢Éú.ÌùÉÏ´úÂë.
import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.*;
public class Zip {
/**
* ѹËõÎļþ¼Ð
* @param baseDir ´ýѹËõĿ¼
* @param output ѹËõÎļþÃû
*/
public static void CreateZip(String baseDir, String output) {
ZipOutputStream zos = null;
try {
List fileList = getSubFiles(new File(baseDir));
zos = new ZipOutputStream(new FileOutputStream(output));
ZipEntry ze = null;
byte[] buf = new byte[1024];
int readLen = 0;
f ......
import java.net.URL;
import java.net.URLDecoder;
public class PathUtil
{
/**
* Get the env of windir, such as "C:\WINDOWS".
* @return the env of windir value.
*/
public static String getWindir(){
return System.getenv("windir");
}
/**
* Get file separator, such as "/" on unix.
*
* @return the separator of file.
*/
public static String getFileSeparator()
{
return System.getProperty("file.separator");
}
/**
* Get line separator, such as "\n" on unix.
*
* @return the separator of line.
*/
public static String getLineSeparator()
{
return System.getProperty("line.separator");
}
/**
* Get programPath
*
* @return programPath
*/
public static String getProgramPath()
{
Class<PathUtil> cls = PathUtil.class;
&nb ......