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

JAVAµ÷ÓÃÍⲿ½ø³Ì×î¼Ñʵ¼ù°æ×é¼þ

package com.allywll.core.exec.base;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeoutException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.allywll.core.util.PeriodicalTask;
import com.gzit.core.util.ArrayUtil;
/**
* ¶ÔÒ»¸öÍⲿ½ø³ÌÖ´Ðйý³ÌµÄ³éÏó
*
* @author gzit team
*
*/
public class ProcessorExecutor implements CmdExecutor {
private static Logger logger = Logger.getLogger("PROCESSOR");
// ½ø³ÌµÄÖ´Ðз¾¶
protected String workingDirectory;
// ½ø³ÌÊä³öµÄ×Ö·û±àÂë
// ĬÈÏʹÓÃÆ½Ì¨µÄ×Ö·û±àÂë
private String outputEncoding = Charset.defaultCharset().name();
// ½ø³ÌµÄÖ´ÐÐÃüÁî
protected String cmd;
// ½ø³ÌµÄÖ´ÐвÎÊý
protected String[] args;
// ½ø³ÌÖ´Ðеij¬Ê±Ê±¼ä £ºµ¥Î»ÎªºÁÃ룬-1²»¿¼Âdz¬Ê±»úÖÆ£¬Óг¬Ê±µÄ»°½«Íⲿ½ø³Ìdestroyµô
protected long timeout = -1;
protected long beginTime;// ½ø³ÌÖ´ÐеĿªÊ¼Ê±¼ä
protected long endTime;// ½ø³ÌÖ´ÐеĽáÊøÊ±¼ä
protected Process process; // µ±Ç°Ö´ÐеĽø³Ì
protected boolean blocking;// µ±Ç°Ö´ÐеĽø³ÌÊÇ·ñÕý´¦ÔÚ×èÈûÖ®ÖÐ
protected boolean flagTimeout;// ÊÇ·ñ·¢Éú³¬Ê±Òì³£
/**
*
* ½ø³ÌÖ´Ðйý³ÌµÄ¼à¿Ø(³¬Ê±ÒÔ¼°ÆäËüµÄ״̬¼ì²â)
*
*/
private static class ExecutorMonitor extends PeriodicalTask {
private Logger elogger = Logger.getLogger("PROCESSOR");
private List<ProcessorExecutor> executors = new LinkedList<ProcessorExecutor>();
public ExecutorMonitor(int period) {
super(period);
}
public void reg(ProcessorExecutor exec) {
this.executors.add(exec);
}
public synchronized void deReg(ProcessorExecutor exec) {
if (exec != null) {
this.executors.remove(exec);
}
}
@Override
protected void doWork() throws Exception


Ïà¹ØÎĵµ£º

java ÊØ»¤Ị̈߳¨Daemon£© £¨×ª£©


JavaÓÐÁ½ÖÖThread£º“ÊØ»¤Ïß³ÌDaemon”Óë“Óû§Ïß³ÌUser”¡£
ÎÒÃÇ֮ǰ¿´µ½µÄÀý×Ó¶¼ÊÇÓû§£¬ÊØ»¤Ïß³ÌÊÇÒ»ÖÖ“ÔÚºǫ́ÌṩͨÓÃÐÔÖ§³Ö”µÄỊ̈߳¬Ëü²¢²»ÊôÓÚ³ÌÐò±¾Ìå¡£
´Ó×ÖÃæÉÏÎÒÃǺÜÈÝÒ×½«ÊØ»¤Ïß³ÌÀí½â³ÉÊÇÓÉÐéÄâ»ú£¨virtual machine£©ÔÚÄÚ²¿´´½¨µÄ£¬¶øÓû§Ïß³ÌÔòÊÇ×Ô¼ºËù´´½¨µÄ¡£ÊÂʵ²¢²»Ê ......

JavaÖеÄÄÚ²¿ÀàºÍÄäÃûÀà(ת)

[ÕªÒª]
ÌáÆðJavaÄÚ²¿ÀࣨInner
Class£©¿ÉÄܺܶàÈ˲»Ì«ÊìϤ£¬Êµ¼ÊÉÏÀàËÆµÄ¸ÅÄîÔÚC++ÀïÒ²ÓУ¬ÄǾÍÊÇǶÌ×ÀࣨNested
Class£©£¬¹ØÓÚÕâÁ½ÕßµÄÇø±ðÓëÁªÏµ£¬ÔÚÏÂÎÄÖлáÓжԱȡ£
[¹Ø¼ü×Ö] Java
ÄÚ²¿Àà
ÄäÃûÀà

¡¡¡¡ÓÐÈË»áÎÊ£¬Èç¹ûÄÚ²¿ÀàÀïµÄÒ»¸ö³ÉÔ±±äÁ¿ÓëÍⲿÀàµÄÒ»¸ö³ÉÔ±±äÁ¿Í¬Ãû£¬Ò²¼´ÍⲿÀàµÄͬÃû³ÉÔ±±äÁ¿±»ÆÁ±ÎÁ ......

ÈçºÎÓÃjavaAPIÈ¡µÃjava½ø³ÌµÄPID£¿

ûÓÐÒ»¸öƽ̨¶ÀÁ¢µÄ·½·¨Äܹ»ÔÚËùÓеÄJVMÉÏʵÏÖ¡£Ò»¸ö×î¼òµ¥¡¢×î½Ó½üÈ¡µÃPIDµÄ°ì·¨ÊÇʹÓãº
ManagementFactory.getRuntimeMXBean().getName() ¡£
È¡µÃµ½µÄ×Ö·û´ÜµÄ¸ñʽΪ[PROCESS_ID]@[MACHINE_NAME]£¬Í¨¹ý½âÎöÕâ¸ö×Ö·û´®¾Í¿ÉÒԵõ½java½ø³ÌµÄPID¡£
ÔÚÒÔÏÂÆ½Ì¨ÉϲâÊÔͨ¹ý£º
1¡¢Windows¡¢LinuxÉϵÄSun JDK1.5¡¢JDK6
2¡¢H ......

java±àÂë¹æ·¶_ÉùÃ÷ºÍÓï¾ä

1.       ÉùÃ÷(Declarations)
5.1  ÿÐÐÉùÃ÷±äÁ¿µÄÊýÁ¿(Number Per Line)
ÍÆ¼öÒ»ÐÐÒ»¸öÉùÃ÷£¬ÒòΪÕâÑùÒÔÀûÓÚдעÊÍ¡£Ò༴£¬
int level; // indentation level
int size; // size of table
ÒªÓÅÓÚ£¬
int level, size;
²»Òª½«²»Í¬ÀàÐͱäÁ¿µÄÉùÃ÷·ÅÔÚͬһÐУ¬ÀýÈ磺
int foo, foo ......

javaÃüÃû¹æ·¶_±à³Ì¹ßÀýºÍ´úÂë·¶Àý

1.       ±à³Ì¹ßÀý(Programming Practices)
9.1  Ìṩ¶ÔʵÀýÒÔ¼°Àà±äÁ¿µÄ·ÃÎÊ¿ØÖÆ(Providing Access to Instance and Class Variables)
ÈôûÓÐ×ã¹»ÀíÓÉ£¬²»Òª°ÑʵÀý»òÀà±äÁ¿ÉùÃ÷Ϊ¹«ÓС£Í¨³££¬ÊµÀý±äÁ¿ÎÞÐèÏÔʽµÄÉèÖÃ(set)ºÍ»ñÈ¡(gotten)£¬Í¨³£Õâ×÷Ϊ·½·¨µ÷ÓõıßԵЧӦ (side effect ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ