亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serverpool.java

?? 線程通信
?? JAVA
字號:

import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

public class ServerPool{
	
	
	static final int POOL_MIN=3;		//min total size of pool(default pool size)	
	static final int POOL_MAX=7;		//max total size of pool
	static final int POOL_MIN_LEFT=0;	//min ready size of pool
	static final int POOL_MAX_LEFT=3;	//max ready size of pool
	static final int GROW=3;			//default change size of pool
	
	private Counter counter=new Counter();
	private ServerSocket serverSocket;
	private int localPort;
	
	private JProgressBar active=null;
	private JProgressBar total=null;
	
	private Library lib;
	

	
	public ServerPool(Library lib,JProgressBar active,JProgressBar total){
		try{
			serverSocket=new ServerSocket(0);
			localPort=serverSocket.getLocalPort();
			System.out.println("server running on"+localPort);
		}catch(IOException e){
			e.printStackTrace();
			throw new RuntimeException();
		}
		this.active=active;
		this.total=total;
		this.lib=lib;
		
		
		//initialise the pool size to POOL_MIN
		synchronized(counter){
			grow(POOL_MIN);
			counter.incTotal(POOL_MIN);
		}
	}
	
	public void grow(int amt){
		for(int i=0;i<amt;i++){
			new Handler(this);
		}
	}
	
	public int getLocalPort(){
		return localPort;
	}
	
	class Counter{
		
		private int numActive=0; //total size of pool so far
		private int numTotal=0;	 //active size of pool so far 
		
		
		public void incActive(){
			try{numActive++;}
			finally{resetActive();}
			//although synchronized counter has no deadlock danger
			//need to keep the display and the actual figure in pace
		}
		
		public void incTotal(int amt){
			try{numTotal+=amt;}
			finally{resetTotal();}
		}
		
		public void decActive(){
			try{numActive--;}
			finally{resetActive();}
		}
		
		public void decTotal(){
			try{numTotal--;}
			finally{resetTotal();}
		}
		
		private void resetActive(){
			active.setValue(numActive);
			active.setString(Integer.toString(numActive));
		}
		
		private void resetTotal(){
			total.setValue(numTotal);
			total.setString(Integer.toString(numTotal));
			
		}
		
		public boolean needGrow(){
			return((numTotal-numActive)<=POOL_MIN_LEFT)
			&&(numTotal<=POOL_MAX);
		}
		
		public int growBy(){
			int diff=POOL_MAX-numTotal;
			return diff>=GROW?GROW:diff;
		}
		
		public boolean needShrink(){
			return ((numTotal-numActive)>=POOL_MAX_LEFT);
			
		}
	}
	
	
	class Handler extends Thread{
		
		private ServerPool pool;

		
		
		public Handler(ServerPool pool){
			this.pool=pool;
			start();
		}
		
		
		
		public void run(){
			
			while(true){
				try{
					Socket s=serverSocket.accept();
					
					synchronized(counter){
						counter.incActive();
						if(counter.needGrow()){
							int amt=counter.growBy();
							pool.grow(amt);
							counter.incTotal(amt);
						}
					}
					
					ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());
					ObjectInputStream ois=new ObjectInputStream(s.getInputStream());
				
					
					System.out.println("reading request");
					Request req=(Request)ois.readObject();
			
					try{
						sleep(1000);//time delay
					}catch(Exception e){}
					System.out.println("processing request");
					Response r=new Response("");
					int type=req.getType();
					List l=req.getReq();
			
					
		
					if(type==Request.AUTHEN){
						boolean pass=lib.authenicate(req.getBorrowerId());
						r=new Response("authenication"+(pass?"pass":"fail"));
						r.setPass(pass);
					}
							
					else if(type==Request.BORROW||type==Request.RETUN||type==Request.SEARCH)
						processBook(type,req,r,l);
					else if(type==Request.CHECKLOAN){
						r=new Response("checkloan request\n");
						Borrower b=lib.getBorrower(req.getBorrowerId());
						r.addMess(b.checkLoan());
					}
		
					System.out.println("sending response");
					oos.writeObject(r);
					oos.flush();
					
					
					synchronized(counter){
						if(counter.needShrink()){
							counter.decTotal();
							counter.decActive();
							return;
						}
						counter.decActive();
						System.out.println("Done");
					}
					
				}catch(Exception e){
					System.out.println("connection exception");
					e.printStackTrace();
					throw new RuntimeException();
				}
			}
		}
					
					
		//Request.BORROW||Request.RETUN||Request.SEARCH
		private void processBook(int type,Request req,Response r,List l){
			boolean isBorrow=(type==Request.BORROW);
			boolean isRetun=(type==Request.RETUN);
			boolean isSearch=(type==Request.SEARCH);
			
			Borrower b=lib.getBorrower(req.getBorrowerId());	
			for(int i=0;i<l.size();i++){
				try{
					String title=(String)l.get(i);
					Book book=lib.getBook(title);
					if(book==null)
						throw new LibraryException(title+" not exist");
					else if(isBorrow){
						r.addMess("borrow request for "+title);
						b.borrow(book);
						r.addMess(" successful\n");
					}
					else if(isRetun){
						r.addMess("retun request for "+title);
						b.retun(book);
						r.addMess(" successful\n");
					}
					else if(isSearch)
						r.addMess("search request for "+title+"\n"+book.toString()+"\n");
					r.addBook(book.getId());
					
				}catch(LibraryException e){
					r.addMess(e.getMessage()+"\n");
				}
			}
		}
		
	
		
		
	}
	
}
	
	
			
			
						
						
						
							
							
							
							
							
						
							
				
			
			
		
		
		
		
		

			
			
			





				

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一二区| 一区二区三区四区在线播放| 看电视剧不卡顿的网站| 91精品国产综合久久精品性色| 日韩 欧美一区二区三区| 日韩精品最新网址| 国产精品白丝jk白祙喷水网站| 国产亚洲婷婷免费| 99久久精品国产麻豆演员表| 一个色妞综合视频在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲伊人色欲综合网| 欧美精品在线观看一区二区| 麻豆精品国产传媒mv男同| 国产亚洲一区二区三区在线观看| av电影天堂一区二区在线| 亚洲va中文字幕| 精品第一国产综合精品aⅴ| 成人白浆超碰人人人人| 亚洲午夜一二三区视频| 精品国产123| 91蝌蚪porny| 蜜桃视频一区二区| 国产精品人成在线观看免费| 欧美色精品天天在线观看视频| 极品少妇一区二区三区精品视频 | 国产精品国产精品国产专区不片| 一本色道**综合亚洲精品蜜桃冫| 日欧美一区二区| 欧美国产日韩一二三区| 欧美在线免费播放| 国产1区2区3区精品美女| 亚洲国产精品久久人人爱蜜臀| 精品理论电影在线| 91精品国产综合久久香蕉麻豆 | 日韩一区二区不卡| 成人av在线观| 美女视频黄频大全不卡视频在线播放| 日本一区二区视频在线| 欧美电影在哪看比较好| 91丨porny丨蝌蚪视频| 蜜臀久久99精品久久久画质超高清| 国产精品毛片久久久久久久| 日韩一区二区三区视频在线观看| 99久久久无码国产精品| 紧缚奴在线一区二区三区| 一区二区久久久久| 国产精品久久久久婷婷二区次| 日韩一区二区三区在线| 欧美性极品少妇| www.日本不卡| 国产美女娇喘av呻吟久久| 日韩高清一级片| 一区二区三区蜜桃网| 欧美国产日产图区| 久久精品一区二区三区av| 欧美精品1区2区3区| 欧美伊人久久久久久午夜久久久久| 国产91精品精华液一区二区三区 | 狠狠色狠狠色综合| 日韩一区欧美二区| 亚洲.国产.中文慕字在线| 亚洲啪啪综合av一区二区三区| 国产欧美在线观看一区| 2020国产成人综合网| 91精品国产免费| 欧美精品日日鲁夜夜添| 欧洲亚洲国产日韩| 欧美伊人精品成人久久综合97 | 国产在线国偷精品产拍免费yy | 亚洲国产精品二十页| 欧美精品一区二区三| 日韩视频一区二区三区在线播放| 欧美日韩在线播放一区| 在线看不卡av| 欧美视频一区二区| 欧美日韩www| 欧美高清视频一二三区 | 欧美亚一区二区| 欧美私人免费视频| 欧美情侣在线播放| 欧美一二区视频| www成人在线观看| 国产精品久久久久精k8| 亚洲精品一二三四区| 中文字幕一区二区三区精华液 | 中文字幕日韩欧美一区二区三区| 欧美激情艳妇裸体舞| 国产欧美一区二区三区网站| 久久久久99精品国产片| 成人免费观看视频| 国产在线不卡一区| 国产精品综合在线视频| 午夜欧美电影在线观看| 欧美日本在线播放| 欧美伦理影视网| k8久久久一区二区三区| 欧美日韩在线直播| 欧美韩日一区二区三区| 日本亚洲欧美天堂免费| 色婷婷av一区二区三区软件| 久久综合国产精品| 五月天婷婷综合| 99久久久久久99| 久久精品一区二区三区不卡| 日韩高清欧美激情| 一道本成人在线| 国产精品三级视频| 国产一区二区三区四区在线观看| 欧美另类videos死尸| 亚洲精品视频免费看| 99精品视频在线观看| 精品福利一区二区三区| 日韩国产欧美视频| 欧美探花视频资源| 一区二区三区在线免费视频| 成人福利电影精品一区二区在线观看| 欧美哺乳videos| 日韩黄色片在线观看| 欧美色视频在线| 一区二区三区鲁丝不卡| eeuss鲁片一区二区三区在线看| 久久精品网站免费观看| 国模娜娜一区二区三区| 日韩免费一区二区| 免费观看在线综合| 91麻豆精品国产| 视频一区视频二区中文字幕| 欧美亚男人的天堂| 午夜在线成人av| 制服丝袜一区二区三区| 香蕉久久夜色精品国产使用方法 | 欧美色图天堂网| 亚洲专区一二三| 欧美性一级生活| 亚洲aaa精品| 91精品国产色综合久久久蜜香臀| 五月综合激情婷婷六月色窝| 91麻豆精品国产自产在线| 人人精品人人爱| 国产精品久久久久影视| 色哟哟欧美精品| 亚洲综合在线视频| 欧美猛男男办公室激情| 奇米影视一区二区三区| 日韩精品一区二区三区四区| 国产综合久久久久久鬼色| 亚洲国产成人在线| 91在线免费播放| 亚洲超碰精品一区二区| 欧美成人一区二区| 国产黄色91视频| 亚洲女与黑人做爰| 欧美三电影在线| 另类人妖一区二区av| 久久精子c满五个校花| caoporm超碰国产精品| 亚洲欧美日韩电影| 欧美福利电影网| 精品一区二区三区在线观看国产| 国产欧美日韩久久| 91久久一区二区| 看电视剧不卡顿的网站| 国产精品美女久久久久久| 欧美视频中文一区二区三区在线观看| 日韩 欧美一区二区三区| 国产午夜精品理论片a级大结局| 成人av先锋影音| 三级影片在线观看欧美日韩一区二区 | 成人丝袜视频网| 亚洲国产精品久久不卡毛片| 日韩亚洲电影在线| www.欧美精品一二区| 婷婷国产v国产偷v亚洲高清| 国产亚洲一区二区三区四区 | 色欧美88888久久久久久影院| 日韩综合小视频| 亚洲国产高清不卡| 884aa四虎影成人精品一区| 国产一区二区影院| 亚洲18色成人| 国产精品嫩草影院com| 制服丝袜中文字幕亚洲| www.久久久久久久久| 久久国产欧美日韩精品| |精品福利一区二区三区| 精品久久一二三区| 91国模大尺度私拍在线视频| 国产精品一区久久久久| 亚洲午夜精品17c| 中文字幕日韩精品一区| 亚洲精品在线一区二区| 欧美在线啊v一区| 精品无人码麻豆乱码1区2区| 亚洲第一搞黄网站| 国产精品盗摄一区二区三区| 欧美大片拔萝卜| 欧美日产在线观看| 一本色道久久综合精品竹菊| 麻豆精品视频在线观看|