`

threadPool用法

阅读更多
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * ThreadPool演示
 */
public class TCPServerPool {

	public static void main(String args[]) throws IOException {
		// ensure the parameter is right!
		if (args.length != 2) {
			throw new IllegalArgumentException("Parameter(s):<port> <ThreadSize>");
		}
		int server_port = Integer.parseInt(args[0]);
		int threadpool_size = Integer.parseInt(args[1]);

		// create a server socket to accept client connection requests
		final ServerSocket serSock = new ServerSocket(server_port);
		final Logger logger = Logger.getLogger("thredPoolLog");
		
		Executor executor = Executors.newFixedThreadPool(5);

		// spawn a fixed number of threds to service clients
		for (int i = 0; i < threadpool_size; i++) {
			Runnable run = new Runnable() {

				public void run() {
					while (true) {
						try {
							Socket clientSock = serSock.accept();
							/**
							 * 把它交给一个独立的handler处理 你可以将handler定义为一个独立的线程(注意性能)
							 * 或者定义为一个静态方法(注意并发的同步问题)。
							 */
						} catch (IOException e) {
							logger.log(Level.WARNING, "Client accept failed", e);
						}
					}
				}
			};
			Thread t = new Thread(run, "Thread-" + i);
			//t.start();
			executor.execute(t);
			//logger.info("create and start a thread named " + t.getName());
		}
	}
}

 

分享到:
评论

相关推荐

    ThreadPool 线程池管理单元

    ThreadPool 线程池管理单元 带调用例子

    Android ThreadPool方法用法Demo源码.rar

    Android ThreadPool方法用法实例Demo源码,mockable-android-23.jar需要另行下载,放在build\generated目录下,Android线程池的相关例子,从入门向高级进阶的必看例子。

    ThreadPool线程池调用步骤

    delphi版线程池调用,这个小项目网上实例很容易找到,对delphi初学者而言,仔细跟中调用步骤,更能理解实现。

    C# ThreadPool 多线程 代码示例

    `ThreadPool`管理线程的创建和销毁,优化系统资源的使用,尤其适合处理大量短生命周期的任务。本示例将探讨如何在C#中使用`ThreadPool`进行多线程编程。 在C#中,`ThreadPool`类提供了多种方法来调度工作项,其中`...

    python threadpool

    在本文中,我们将深入探讨`threadpool`的原理、使用方法以及其在多线程编程中的应用。 ### 一、线程池概念 线程池是一种线程使用模式,预先创建一组线程,当有任务需要执行时,从线程池中取出一个线程来执行任务,...

    Boost threadpool优先级实例

    4. **提交任务**:使用线程池的`schedule`方法提交任务,对于优先级任务,可以使用`pool.schedule_with_priority`,并传入任务和优先级值。例如: ```cpp pool.schedule_with_priority(priority, std::bind(my_...

    threadpool.tar.gz

    在"threadpool.cc"中,可能会定义线程池类的实现,包括构造函数(初始化线程和队列)、`submit_task()`方法(添加任务到队列并通知线程)、`join()`方法(等待所有线程完成工作)等。"threadpool.h"则可能包含线程池...

    C# Thread、ThreadPool、Task测试

    理解它们的工作原理和使用方法对于优化应用程序的性能至关重要。下面将详细阐述这三个概念及其相关知识点。 一、C# Thread 线程是操作系统中的一个基本执行单元,每个线程都有自己的执行上下文,可以独立执行代码。...

    C++11 ThreadPool:一个易于使用的C ++ 11线程池。-开源

    一个易于使用的C ++ 11线程池。 使用ThreadPool类对自由函数进行排队,并使用std :: for_each()和std :: transform()的并行版本。 可配置为仅用于标头或与库一起使用。 有许多用法示例。

    ThreadPool.zip

    4. **管理线程池**:当不再有任务提交时,可以通过shutdown()方法优雅地关闭线程池,或者使用shutdownNow()立即停止所有正在执行的任务并尝试停止线程。 在代码实例中,可能还包含了线程同步和互斥的示例,如...

    threadpool

    - 使用 `openThreads()` 方法根据 `minSpareThreads` 参数打开指定数量的初始线程。 - 创建并启动 `MonitorRunnable` 实例来监控线程池中的空闲线程。 #### 设置和获取参数的方法 提供了一系列 getter 和 setter ...

    QT_ThreadPool.rar

    同时,项目博客文章(https://blog.csdn.net/qq_37529913/category_10612329.html)提供了更详细的讲解和示例代码,帮助理解线程池的工作原理和使用方法。这不仅有助于提升你的QT编程技能,也有利于理解和解决在并发...

    js_ThreadPool

    此外,还可以使用`set`系列方法来设置日期和时间,`getTime()`和`setTime()`用于获取和设置毫秒数,以及`toDateString()`, `toLocaleString()`等方法来格式化输出日期和时间。 在`js_date.js`中,可能会有如下代码...

    python线程池threadpool使用篇

    除了上述使用方法外,threadpool模块还提供了更多详细的方法,例如createWorkers、dismissWorkers、joinAllDismissedWorkers、putRequest、poll和wait等,它们可以用来更细致地管理线程池的工作。例如: - ...

    线程池threadpool_src

    线程池是一种多线程处理形式,它将预先创建好的一组线程维护在一个池中,以便重复使用,而不是每次需要时都创建新的线程。这种技术可以有效地管理和控制并发执行的任务,提高系统的性能和资源利用率。 在“线程池...

    boost threadpool(修复内存泄露后的版本)

    Boost Threadpool库是一个高效、灵活且可定制的线程池实现,它被广泛用于多线程编程中,特别是在C++环境中。线程池允许开发者管理一组预创建的...同时,了解线程池的内部机制和正确使用方法对于避免潜在问题至关重要。

    c# 线程池的管理 通过ThreadPool

    在C#中,`ThreadPool`类提供了与线程池交互的方法。以下是一些重要的API和概念: 1. **QueueUserWorkItem**: 这是线程池中最常用的API,用于将工作项(一个委托)放入队列中等待执行。例如: ```csharp ...

    c#的ThreadPool使用笔记.pdf

    在给出的代码示例中,展示了如何使用`ThreadPool`来调度工作项。首先,定义了一个`WaitCallback`委托实例`waitCallback`,这个委托类型指定了一个没有返回值但接受一个`Object`参数的方法。`MyThreadWork`方法就符合...

    C#ThreadPool之QueueUserWorkItem使用案例详解.docx

    QueueUserWorkItem方法是ThreadPool的核心接口之一,它的基本用法如下: ```csharp ThreadPool.QueueUserWorkItem(new WaitCallback(DoSomethingLong), "参数"); ``` 这里的`DoSomethingLong`是需要异步执行的方法...

    Tomat组件研究之ThreadPool

    在研究ThreadPool组件时,作者发现虽然Apache使用了晦涩难懂的写法,但一旦理解了内部机制,就会发现里面有很多值得学习的地方。同时,也存在一些看似多余的设计,这些设计在实际应用中可能并不会发挥太大的作用。 ...

Global site tag (gtag.js) - Google Analytics