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 线程池管理单元 带调用例子
Android ThreadPool方法用法实例Demo源码,mockable-android-23.jar需要另行下载,放在build\generated目录下,Android线程池的相关例子,从入门向高级进阶的必看例子。
delphi版线程池调用,这个小项目网上实例很容易找到,对delphi初学者而言,仔细跟中调用步骤,更能理解实现。
`ThreadPool`管理线程的创建和销毁,优化系统资源的使用,尤其适合处理大量短生命周期的任务。本示例将探讨如何在C#中使用`ThreadPool`进行多线程编程。 在C#中,`ThreadPool`类提供了多种方法来调度工作项,其中`...
在本文中,我们将深入探讨`threadpool`的原理、使用方法以及其在多线程编程中的应用。 ### 一、线程池概念 线程池是一种线程使用模式,预先创建一组线程,当有任务需要执行时,从线程池中取出一个线程来执行任务,...
4. **提交任务**:使用线程池的`schedule`方法提交任务,对于优先级任务,可以使用`pool.schedule_with_priority`,并传入任务和优先级值。例如: ```cpp pool.schedule_with_priority(priority, std::bind(my_...
在"threadpool.cc"中,可能会定义线程池类的实现,包括构造函数(初始化线程和队列)、`submit_task()`方法(添加任务到队列并通知线程)、`join()`方法(等待所有线程完成工作)等。"threadpool.h"则可能包含线程池...
理解它们的工作原理和使用方法对于优化应用程序的性能至关重要。下面将详细阐述这三个概念及其相关知识点。 一、C# Thread 线程是操作系统中的一个基本执行单元,每个线程都有自己的执行上下文,可以独立执行代码。...
一个易于使用的C ++ 11线程池。 使用ThreadPool类对自由函数进行排队,并使用std :: for_each()和std :: transform()的并行版本。 可配置为仅用于标头或与库一起使用。 有许多用法示例。
4. **管理线程池**:当不再有任务提交时,可以通过shutdown()方法优雅地关闭线程池,或者使用shutdownNow()立即停止所有正在执行的任务并尝试停止线程。 在代码实例中,可能还包含了线程同步和互斥的示例,如...
- 使用 `openThreads()` 方法根据 `minSpareThreads` 参数打开指定数量的初始线程。 - 创建并启动 `MonitorRunnable` 实例来监控线程池中的空闲线程。 #### 设置和获取参数的方法 提供了一系列 getter 和 setter ...
同时,项目博客文章(https://blog.csdn.net/qq_37529913/category_10612329.html)提供了更详细的讲解和示例代码,帮助理解线程池的工作原理和使用方法。这不仅有助于提升你的QT编程技能,也有利于理解和解决在并发...
此外,还可以使用`set`系列方法来设置日期和时间,`getTime()`和`setTime()`用于获取和设置毫秒数,以及`toDateString()`, `toLocaleString()`等方法来格式化输出日期和时间。 在`js_date.js`中,可能会有如下代码...
线程池是一种多线程处理形式,它将预先创建好的一组线程维护在一个池中,以便重复使用,而不是每次需要时都创建新的线程。这种技术可以有效地管理和控制并发执行的任务,提高系统的性能和资源利用率。 在“线程池...
Boost Threadpool库是一个高效、灵活且可定制的线程池实现,它被广泛用于多线程编程中,特别是在C++环境中。线程池允许开发者管理一组预创建的...同时,了解线程池的内部机制和正确使用方法对于避免潜在问题至关重要。
在C#中,`ThreadPool`类提供了与线程池交互的方法。以下是一些重要的API和概念: 1. **QueueUserWorkItem**: 这是线程池中最常用的API,用于将工作项(一个委托)放入队列中等待执行。例如: ```csharp ...
在给出的代码示例中,展示了如何使用`ThreadPool`来调度工作项。首先,定义了一个`WaitCallback`委托实例`waitCallback`,这个委托类型指定了一个没有返回值但接受一个`Object`参数的方法。`MyThreadWork`方法就符合...
QueueUserWorkItem方法是ThreadPool的核心接口之一,它的基本用法如下: ```csharp ThreadPool.QueueUserWorkItem(new WaitCallback(DoSomethingLong), "参数"); ``` 这里的`DoSomethingLong`是需要异步执行的方法...
在研究ThreadPool组件时,作者发现虽然Apache使用了晦涩难懂的写法,但一旦理解了内部机制,就会发现里面有很多值得学习的地方。同时,也存在一些看似多余的设计,这些设计在实际应用中可能并不会发挥太大的作用。 ...
除了上述使用方法外,threadpool模块还提供了更多详细的方法,例如createWorkers、dismissWorkers、joinAllDismissedWorkers、putRequest、poll和wait等,它们可以用来更细致地管理线程池的工作。例如: - ...