java¶¯Ì¬´úÀíÓ¦ÓÃÓÚRMI
¶¯Ì¬´úÀíÊÇÖ¸¿Í»§Í¨¹ý´úÀíÀàÀ´µ÷ÓÃÆäËü¶ÔÏóµÄ·½·¨
¶¯Ì¬´úÀíʹÓó¡ºÏ:
•Ô¶³Ì·½·¨µ÷ÓÃ(RMI)
•
1.´´½¨Ò»¸öʵÏÖ½Ó¿ÚInvocationHandlerµÄÀ࣬Ëü±ØÐëʵÏÖinvoke·½·¨
2.´´½¨±»´úÀíµÄÀàÒÔ¼°½Ó¿Ú
3.ͨ¹ýProxyµÄ¾²Ì¬·½·¨
newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) ´´½¨Ò»¸ö´úÀí
4.ͨ¹ý´úÀíµ÷Ó÷½·¨
²Î¼û³ÌÐòVectorProxy.java
view plaincopy to clipboardprint?
package com.langsin.dynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;
import java.util.Vector;
public class VectorProxy implements InvocationHandler
{
private Object proxyobj;
public VectorProxy(Object obj)
{
proxyobj = obj;
}
public static Object factory(Object obj)
{
Class<?> cls = obj.getClass();
return Proxy.newProxyInstance(cls.getClassLoader(),
cls.getInterfaces(), new VectorProxy(obj));
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
System.out.println("before calling " + method);
if (args != null) 
Ïà¹ØÎĵµ£º
ÇëÌṩһ¸ö¶ÔiµÄÉùÃ÷£¬½«ÏÂÃæµÄÑ»·×ª±äΪһ¸öÎÞÏÞÑ»·£º
while (i != 0) {
i >>>= 1;
}
»ØÏëһϣ¬>>>=ÊǶÔÓ¦ÓÚÎÞ·ûºÅÓÒÒÆ²Ù×÷·ûµÄ¸³Öµ²Ù×÷·û¡£0±»´Ó×óÒÆÈëµ½ÓÉÒÆÎ»²Ù×÷¶ø¿Õ³öÀ´µÄλÉÏ£¬¼´Ê¹±»ÒÆÎ»µÄ¸ºÊýÒ²ÊÇÈç´Ë¡£
Õâ¸öÑ»·±ÈÇ°ÃæÈý¸öÑ»·ÒªÉÔ΢¸´ÔÓÒ»µã£¬ÒòΪÆäÑ»·Ìå·Ç¿Õ¡£ÔÚÆäÑ»·ÌâÖУ¬ ......
ÇëÌṩһ¸ö¶ÔiµÄÉùÃ÷£¬½«ÏÂÃæµÄÑ»·×ª±äΪһ¸öÎÞÏÞÑ»·¡£Õâ¸öÑ»·²»ÐèҪʹÓÃÈκÎ5.0°æµÄÌØÐÔ£º
while (i != 0 && i == -i) {
}
ÕâÈÔÈ»ÊÇÒ»¸öÑ»·¡£ÔÚ²¼¶û±í´ïʽ(i != 0 && i == -i)ÖУ¬Ò»Ôª¼õºÅ²Ù×÷·û×÷ÓÃÓÚi£¬ÕâÒâζ×ÅËüµÄÀàÐͱØÐëÊÇÊý×ÖÐ͵ģºÒ»Ôª¼õºÅ²Ù×÷·û×÷ÓÃÓÚÒ»¸ö·ÇÊý×ÖÐͲÙ×÷ÊýÊÇ·Ç·¨µÄ¡£Òò´Ë£ ......
¾¡¹ÜÔÚÒ»¸ö·½·¨ÉùÃ÷Öп´µ½Ò»¸öthrows×Ó¾äÊǺܳ£¼ûµÄ£¬µ«ÊÇÔÚ¹¹ÔìÆ÷µÄÉùÃ÷Öп´µ½Ò»¸öthrows×Ó¾ä¾ÍºÜÉÙ¼ûÁË¡£ÏÂÃæµÄ³ÌÐò¾ÍÓÐÕâÑùµÄÒ»¸öÉùÃ÷¡£ÄÇô£¬Ëü½«´òÓ¡³öÊ²Ã´ÄØ£¿
public class Reluctant {
private Reluctant internalInstance = new Reluctant();
public Reluctant() throws Exception {
throw n ......
ÏÂÃæµÄ·½·¨½«Ò»¸öÎļþ¿½±´µ½ÁíÒ»¸öÎļþ£¬²¢ÇÒ±»Éè¼ÆÎªÒª¹Ø±ÕËüËù´´½¨µÄÿһ¸öÁ÷£¬¼´Ê¹ËüÅöµ½I/O´íÎóÒ²ÒªÈç´Ë¡£Òź¶µÄÊÇ£¬Ëü²¢·Ç×ÜÊÇÄܹ»×öµ½ÕâÒ»µã¡£ÎªÊ²Ã´²»ÄÜÄØ£¬ÄãÈçºÎ²ÅÄܶ©ÕýËüÄØ£¿
static void copy(String src, String dest) throws IOException {
InputStream in = null;
OutputStream out = n ......