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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? httpserver.java

?? java多線程實例
?? JAVA
字號:
import java.io.*;
import java.net.*;

// uses ObjectFIFO from chapter 18

public class HttpServer extends Object {

	// currently available HttpWorker objects
	private ObjectFIFO idleWorkers;

	// all HttpWorker objects
	private HttpWorker[] workerList;
	private ServerSocket ss;

	private Thread internalThread;
	private volatile boolean noStopRequested;

	public HttpServer(
				File docRoot,
				int port,
				int numberOfWorkers,
				int maxPriority
			) throws IOException {

		// Allow a max of 10 sockets to queue up 
		// waiting for accpet().
		ss = new ServerSocket(port, 10); 

		if ( ( docRoot == null ) || 
			 !docRoot.exists() || 
			 !docRoot.isDirectory() 
		   ) {

			throw new IOException("specified docRoot is null " +
				"or does not exist or is not a directory");
		}

		// ensure that at least one worker is created
		numberOfWorkers = Math.max(1, numberOfWorkers);

		// Ensure: 
		// (minAllowed + 2) <= serverPriority <= (maxAllowed - 1)
		// which is generally:
		//   3 <= serverPriority <= 9
		int serverPriority = Math.max(
				Thread.MIN_PRIORITY + 2, 
				Math.min(maxPriority, Thread.MAX_PRIORITY - 1)
			);

		// Have the workers run at a slightly lower priority so 
		// that new requests are handled with more urgency than 
		// in-progress requests.
		int workerPriority = serverPriority - 1;

		idleWorkers = new ObjectFIFO(numberOfWorkers);
		workerList = new HttpWorker[numberOfWorkers];

		for ( int i = 0; i < numberOfWorkers; i++ ) {
			// Workers get a reference to the FIFO to add 
			// themselves back in when they are ready to 
			// handle a new request.
			workerList[i] = new HttpWorker(
						docRoot, workerPriority, idleWorkers);
		}

		// Just before returning, the thread should be 
		// created and started.
		noStopRequested = true;

		Runnable r = new Runnable() {
				public void run() {
					try {
						runWork();
					} catch ( Exception x ) {
						// in case ANY exception slips through
						x.printStackTrace(); 
					}
				}
			};

		internalThread = new Thread(r);
		internalThread.setPriority(serverPriority); 
		internalThread.start();
	}

	private void runWork() {
		System.out.println(
				"HttpServer ready to receive requests");

		while ( noStopRequested ) {
			try {
				Socket s = ss.accept();

				if ( idleWorkers.isEmpty() ) {
					System.out.println(
						"HttpServer too busy, denying request");

					BufferedWriter writer = 
						new BufferedWriter(
							new OutputStreamWriter(
								s.getOutputStream()));
					
					writer.write("HTTP/1.0 503 Service " +
									"Unavailable\r\n\r\n");

					writer.flush();
					writer.close();
					writer = null;
				} else {
					// No need to be worried that idleWorkers 
					// will suddenly be empty since this is the 
					// only thread removing items from the queue.
					HttpWorker worker = 
							(HttpWorker) idleWorkers.remove();

					worker.processRequest(s);
				}
			} catch ( IOException iox ) {
				if ( noStopRequested ) {
					iox.printStackTrace();
				}
			} catch ( InterruptedException x ) {
				// re-assert interrupt
				Thread.currentThread().interrupt(); 
			}
		}
	}

	public void stopRequest() {
		noStopRequested = false;
		internalThread.interrupt();

		for ( int i = 0; i < workerList.length; i++ ) {
			workerList[i].stopRequest();
		}

		if ( ss != null ) {
			try { ss.close(); } catch ( IOException iox ) { }
			ss = null;
		}
	}

	public boolean isAlive() {
		return internalThread.isAlive();
	}

	private static void usageAndExit(String msg, int exitCode) {
		System.err.println(msg);
		System.err.println("Usage: java HttpServer <port> " +
							"<numWorkers> <documentRoot>");
		System.err.println("   <port> - port to listen on " +
							"for HTTP requests");
		System.err.println("   <numWorkers> - number of " +
							"worker threads to create");
		System.err.println("   <documentRoot> - base " +
							"directory for HTML files");
		System.exit(exitCode);
	}

	public static void main(String[] args) {
		if ( args.length != 3 ) {
			usageAndExit("wrong number of arguments", 1);
		}

		String portStr = args[0];
		String numWorkersStr = args[1];
		String docRootStr = args[2];

		int port = 0;

		try {
			port = Integer.parseInt(portStr);
		} catch ( NumberFormatException x ) {
			usageAndExit("could not parse port number from '" + 
					portStr + "'", 2);
		}

		if ( port < 1 ) {
			usageAndExit("invalid port number specified: " + 
					port, 3);
		}

		int numWorkers = 0;

		try {
			numWorkers = Integer.parseInt(numWorkersStr);
		} catch ( NumberFormatException x ) {
			usageAndExit(
					"could not parse number of workers from '" + 
					numWorkersStr + "'", 4);
		}

		File docRoot = new File(docRootStr);

		try {
			new HttpServer(docRoot, port, numWorkers, 6);
		} catch ( IOException x ) {
			x.printStackTrace();
			usageAndExit("could not construct HttpServer", 5);
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av资源| 麻豆精品一区二区三区| 风间由美性色一区二区三区| 国产亚洲精品福利| 成人免费视频网站在线观看| 中文字幕一区二区三区蜜月| 在线看国产日韩| 五月婷婷激情综合网| 日韩欧美一区电影| jlzzjlzz国产精品久久| 亚洲激情六月丁香| 欧美日本在线一区| 国产精品18久久久久久久久久久久| 欧美激情一区二区在线| 欧美亚洲综合色| 蜜臂av日日欢夜夜爽一区| 欧美国产一区二区在线观看| 欧美性生活影院| 麻豆国产精品官网| 亚洲欧美日韩国产综合| 91精品国产91热久久久做人人 | 亚洲一区二区av在线| 91精品蜜臀在线一区尤物| 国产真实精品久久二三区| 国产精品免费免费| 欧美一区二区三区免费大片| 岛国精品在线播放| 青青草原综合久久大伊人精品优势 | 欧美日韩精品一区二区三区四区| 精品一区二区三区免费毛片爱| 中文字幕在线一区免费| 欧美日韩免费在线视频| 高清beeg欧美| 日韩激情一区二区| 中文字幕一区二区三区四区不卡| 制服丝袜av成人在线看| 菠萝蜜视频在线观看一区| 久久精品国产久精国产爱| 亚洲欧美日韩中文字幕一区二区三区| 欧美一区二区福利在线| 91福利在线观看| 粉嫩av一区二区三区粉嫩 | 国产做a爰片久久毛片| 一区二区在线观看免费| 久久久99精品久久| 日韩一级黄色片| 欧美日韩国产另类不卡| www.亚洲激情.com| 国产精品白丝av| 久久超级碰视频| 天堂va蜜桃一区二区三区漫画版| 亚洲日本va在线观看| 欧美国产激情一区二区三区蜜月| 欧美tk—视频vk| 7777女厕盗摄久久久| 在线亚洲人成电影网站色www| 成人激情校园春色| 国产成人亚洲综合a∨婷婷图片| 美女在线观看视频一区二区| 丝袜美腿高跟呻吟高潮一区| 亚洲黄网站在线观看| 亚洲欧洲av在线| 国产精品日日摸夜夜摸av| 国产午夜精品一区二区| 久久久久亚洲蜜桃| 久久免费看少妇高潮| 精品日韩一区二区三区| 日韩欧美国产午夜精品| 日韩免费高清视频| 精品久久久久久久人人人人传媒 | 欧美xxxxx牲另类人与| 777久久久精品| 91精品福利在线一区二区三区| 精品污污网站免费看| 日本精品免费观看高清观看| 色综合久久综合网97色综合| 91免费视频观看| 在线一区二区三区四区五区| 在线精品视频免费观看| 欧美午夜精品电影| 欧美日韩免费观看一区三区| 欧美日韩免费观看一区三区| 欧美精品xxxxbbbb| 91精品国产综合久久久久| 日韩欧美激情一区| 久久久www免费人成精品| 欧美激情一区二区三区四区| 日韩一区在线免费观看| 亚洲激情男女视频| 视频一区二区不卡| 国产又粗又猛又爽又黄91精品| 精品夜夜嗨av一区二区三区| 国产成人精品免费视频网站| 97精品久久久久中文字幕| 欧美性色综合网| 日韩女优毛片在线| 欧美激情艳妇裸体舞| 亚洲免费观看视频| 天天综合日日夜夜精品| 国产一区二区三区四| av电影在线观看完整版一区二区 | 欧美日韩在线播放一区| 日韩欧美国产系列| 国产精品欧美久久久久无广告| 国产精品久久国产精麻豆99网站| 亚洲精品中文在线观看| 男女激情视频一区| 99在线精品免费| 91麻豆精品国产91久久久久 | 亚洲三级在线播放| 日本欧美一区二区在线观看| 国产传媒日韩欧美成人| 一本色道亚洲精品aⅴ| 欧美一区欧美二区| 国产欧美一区二区三区鸳鸯浴 | 成人激情小说网站| 欧美精品久久99久久在免费线 | 国产盗摄女厕一区二区三区| 在线国产电影不卡| 久久亚洲精品国产精品紫薇| 亚洲最大成人网4388xx| 国产美女娇喘av呻吟久久| 欧美最猛性xxxxx直播| 亚洲精品一区二区三区蜜桃下载| 依依成人精品视频| 国产精品一区久久久久| 欧美日韩一区视频| 中文字幕精品在线不卡| 蜜臂av日日欢夜夜爽一区| 在线亚洲免费视频| 欧美经典一区二区| 免费在线观看视频一区| 在线一区二区三区四区五区| 国产日产精品1区| 日韩国产欧美在线观看| 日本韩国精品在线| 国产精品对白交换视频| 久久超碰97中文字幕| 欧美日韩视频在线观看一区二区三区| 国产精品嫩草影院com| 久久国产精品99精品国产| 欧美剧情电影在线观看完整版免费励志电影| 久久精品一区八戒影视| 久久成人精品无人区| 91精品国产综合久久久久久久久久 | 久久精品久久综合| 在线看日本不卡| 亚洲欧洲精品一区二区精品久久久| 久久不见久久见免费视频7| 欧美日韩亚洲综合一区二区三区| 亚洲色图欧美在线| youjizz国产精品| 亚洲国产成人自拍| 国产成人亚洲综合a∨婷婷图片| 精品欧美乱码久久久久久| 同产精品九九九| 欧美日韩在线免费视频| 亚洲综合激情另类小说区| 97久久精品人人做人人爽50路| 国产精品美女久久久久久久久| 国产盗摄精品一区二区三区在线| 精品sm在线观看| 狠狠色2019综合网| 欧美一级久久久| 久久国内精品自在自线400部| 日韩欧美国产午夜精品| 久久国产乱子精品免费女| 欧美r级电影在线观看| 黄色成人免费在线| 久久久五月婷婷| 国产一区二区三区日韩| 国产精品午夜电影| 91亚洲精品一区二区乱码| 一区二区三区欧美日韩| 日本久久电影网| 天堂成人国产精品一区| 日韩欧美国产三级| 久久成人麻豆午夜电影| 国产人伦精品一区二区| www.色综合.com| 亚洲一二三四久久| 91精品国产品国语在线不卡| 久久精品国产999大香线蕉| 久久蜜桃av一区精品变态类天堂| 国产91精品精华液一区二区三区 | 亚洲综合另类小说| 欧美亚州韩日在线看免费版国语版| 亚洲精品一二三| 欧美精品九九99久久| 国产精一区二区三区| 综合色中文字幕| 欧美日韩精品福利| 国内久久婷婷综合| 日韩一区在线免费观看| 欧美肥妇毛茸茸| 高潮精品一区videoshd| 亚洲成av人影院在线观看网| 精品国产乱码久久久久久牛牛| jlzzjlzz亚洲日本少妇| 日韩电影一区二区三区|