锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲综合日韩久久成人AV,亚洲精品国产字幕久久不卡,亚洲伊人久久大香线蕉影院 http://www.tkk7.com/feuyeux/category/47048.htmlBelong to Eric Han zh-cn Wed, 25 Apr 2012 20:52:01 GMT Wed, 25 Apr 2012 20:52:01 GMT 60 杞瀹㈡埛绔殑瀹炵幇 http://www.tkk7.com/feuyeux/archive/2011/07/08/353948.htmlLu Han Lu Han Fri, 08 Jul 2011 08:01:00 GMT http://www.tkk7.com/feuyeux/archive/2011/07/08/353948.html http://www.tkk7.com/feuyeux/comments/353948.html http://www.tkk7.com/feuyeux/archive/2011/07/08/353948.html#Feedback 1 http://www.tkk7.com/feuyeux/comments/commentRss/353948.html http://www.tkk7.com/feuyeux/services/trackbacks/353948.html Scenario 鏈嶅姟鍣?:瀹㈡埛绔痭 鍙戦丯otification緇欏鎴風鐨?/span>鍚?/span>澶勭悊 鏈嶅姟鍣ㄧ緇欑涓涓鎴風鍙戦乶otification錛岀劧鍚庡湪闄愬畾鏃墮棿鍐咃紝絳夊緟瀹㈡埛绔綔鍑哄洖搴?#8212;鍚戞湇鍔″櫒鍙戦乺equest銆傚鏋滃鎴風涓鐩存病鏈夊洖澶嶏紝鏈嶅姟鍣ㄤ細鍦ㄥ埌杈鵑檺瀹氭椂闂村悗錛屽悜絎簩涓鎴風鍙戦乶otification銆傚鏋滃鎴風鍦ㄩ檺瀹氭椂闂村唴鍥炲錛屾湇鍔″櫒绔斁寮冨啀緇欏叾浠栧鎴風鍙戦佹秷鎭?/span>Design 鏈嶅姟鍣ㄣ佸鎴風浣跨敤socket鍙戦佸拰鎺ユ敹淇℃伅 鍙戦佺瀛樺湪涓涓鎴風鍒楄〃錛屾瘡嬈″彂閫佷竴緇欎竴涓鎴風錛屽彂閫佸悗錛屽悜Helper鍙戦佹坊鍔犺瀹㈡埛绔痠d鐨勮姹傘?br /> 瀹㈡埛绔敹鍒頒俊鎭細鍚慔elper鍙戦佸垹闄よid鐨勮姹傘?br /> Helper鏀跺埌add鏃?/span>錛屽惎鍔ㄤ竴涓?/span>ScheduledExecuto rService綾葷殑 schedule錛?/span> 寤舵椂鍚姩 涓涓嚎紼嬶紝騫跺皢璇?/span>schedule緙撳瓨 銆俽emove鏃訛紝浠庣紦瀛橀噷鍙栧嚭 schedule騫跺仠姝㈠畠銆傚鏋滃湪寤舵椂鏃墮棿鍐咃紝綰跨▼娌℃湁琚仠姝紝瀹冧細琚墽琛岋細浠庣紦瀛樹腑鍙栧嚭錛屽憡璇夋湇鍔″櫒鍚戜笅涓涓鎴風鍙戦佽姹傘?/span> UML
Code
Server public class Server { public static void main(String[] args) throws Exception { final String id = " 100 " ; ServerSocket serverSocket = new ServerSocket(IO.BIO_TCP_PORT); System.out.println( " Server is listening on port: " + IO.BIO_TCP_PORT); Socket socket = null ; try { socket = serverSocket.accept(); } catch (Exception e) { System.out.println( " accept socket error. " ); } SendingNotification sender = new SendingNotification(id, socket); sender.start(); ReceivingRequest receiver = new ReceivingRequest(socket); receiver.start(); } SendingNotification public class SendingNotification extends Thread { private String id; private Socket socket; public SendingNotification(String sdId, Socket socket) { this .id = sdId; this .socket = socket; } @Override public void run() { Helper.getInstance().add(id); OutputStream outputStream = null ; byte [] buffer = new byte [ 1024 ]; try { outputStream = socket.getOutputStream(); buffer = (id + " \n " ).getBytes(); outputStream.write(buffer); outputStream.flush(); } catch (Exception e) { System.out.println( " don't send success " ); try { outputStream.close(); socket.close(); } catch (Exception e1) { } } } } ReceivingRequest public class ReceivingRequest extends Thread { private Socket socket; public ReceivingRequest(Socket socket) { this .socket = socket; } @Override public void run() { BufferedReader in; boolean finished = false ; while ( ! finished) { try { in = new BufferedReader( new InputStreamReader(socket.getInputStream())); String line = in.readLine(); if (line == null ) { Thread.sleep( 100 ); continue ; } Helper.getInstance().remove(line); in.close(); socket.close(); finished = true ; } catch (Exception e) { System.out.println( " receive fails to run. " ); } } } } Helper public class Helper { private static Helper instance = new Helper(); private ConcurrentHashMap < String, Schedule > cache = new ConcurrentHashMap < String, Schedule > (); private int timeout = 10 ; public static Helper getInstance() { return instance; } private Schedule addTask( final String id) { final Schedule schedule = new Schedule(); schedule.schedule( new Runnable() { public void run() { doNext(id); schedule.shutdown(); } }, timeout, SECONDS); return schedule; } private void doNext(String id) { Schedule schedule = cache.remove(id); System.out.println( " time out and do next well. " ); System.out.println( " total time= " + schedule.getSeconds()); } public void add( final String id) { Schedule schedule = addTask(id); cache.put(id, schedule); System.out.println( " Add to cache successfully " ); } public void remove( final String id) { Schedule schedule = cache.remove(id); if (schedule == null ) System.out.println( " no schedule exist. " ); else { schedule.shutdown(); System.out.println( " Remove to cache successfully " ); } } Schedule public class Schedule { ScheduledExecutorService excutor; private long startTime; public Schedule() { excutor = Executors.newSingleThreadScheduledExecutor(); startTime = System.currentTimeMillis(); } public long getTotalTime() { long endTime = System.currentTimeMillis(); return endTime - startTime; } public String getSeconds() { long s = getTotalTime() / 1000 ; return s + " seconds " ; } public void schedule(Runnable command, long delay, TimeUnit unit) { excutor.schedule(command, delay, unit); } public void shutdown() { excutor.shutdownNow(); } } Client public class Client { public static void main(String[] args) { Socket socket; try { socket = new Socket(IO.SERVER_IP, IO.BIO_TCP_PORT); readLine(socket); } catch (UnknownHostException e) { } catch (IOException e) { } catch (InterruptedException e) { } } private static void readLine(Socket socket) throws IOException, InterruptedException { BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true ); boolean flag = true ; while (flag) { String command = in.readLine(); if (command == null ) { flag = true ; continue ; } else { // Thread.sleep(2000); out.println(command); out.flush(); out.close(); in.close(); socket.close(); flag = false ; } } } IO public interface IO { String SERVER_IP = " 127.0.0.1 " ; // "192.168.225.166"; int BIO_TCP_PORT = 9109 ;
]]>
主站蜘蛛池模板:
久久精品国产精品亚洲人人 |
国产一级淫片免费播放电影 |
亚洲精品夜夜夜妓女网 |
久久www免费人成看国产片 |
亚洲第一区精品日韩在线播放 |
精品在线视频免费 |
亚洲国产精品尤物yw在线 |
一个人免费观看www视频 |
亚洲一区二区三区无码影院 |
国产99久久久国产精免费 |
区三区激情福利综合中文字幕在线一区亚洲视频1
|
亚洲专区一路线二 |
啦啦啦中文在线观看电视剧免费版
|
亚洲偷自拍拍综合网 |
中文字幕看片在线a免费 |
亚洲动漫精品无码av天堂 |
**一级一级毛片免费观看 |
亚洲最大福利视频 |
亚洲成a人片在线播放 |
中文字幕免费观看全部电影 |
亚洲a在线视频视频 |
国产一卡2卡3卡4卡2021免费观看 |
亚洲熟妇无码八V在线播放 |
免费观看午夜在线欧差毛片 |
japanese色国产在线看免费 |
亚洲日韩精品A∨片无码 |
91麻豆国产免费观看 |
亚洲综合精品伊人久久 |
亚洲狠狠爱综合影院婷婷 |
东方aⅴ免费观看久久av |
亚洲剧场午夜在线观看 |
国产又长又粗又爽免费视频 |
九九热久久免费视频 |
亚洲网站在线播放 |
国产免费人视频在线观看免费 |
东北美女野外bbwbbw免费 |
亚洲午夜国产精品 |
亚洲七七久久精品中文国产 |
国产免费一区二区三区 |
一区二区免费在线观看 |
亚洲一级毛片中文字幕 |