`

线程池:新建线程时要考虑是否有并发

    博客分类:
  • java
阅读更多

当我们使用创建一条线程时,是否有问题呢?

 

ServerSocket socket = new ServerSocket();

while(true){
         Socket s = socket.accept();//接受到socket请求后,创建一条线程进行操作
         new Thread(s).start();
}

 

代码没问题,但在并发量大,问题就出现了。

 

100个连接启动100条线程,1000000个连接能启动如此多线程吗?

 

 

没有开发过大并发的项目,对此没考虑过。今天一个同事问,才有所体会。建立一定数量的线程池,进行处理

 

int nThreads = 200;
ExecutorService pool = Executor.newFixedThreadPool(nThreads ) ;

while(true){
       pool.execute(new Runnable());
}
 

并发,线程同步上还有很多需要研究的东西~

 

下次再研究~

 

分享到:
评论

相关推荐

    Java中的线程与线程池.pptx

    1. newCachedThreadPool:创建一个可缓存线程池,线程空闲超过指定时间后会被回收,当线程池为空时,会新建线程来处理任务。 2. newSingleThreadExecutor:创建一个单线程线程池,所有任务都在一个线程中顺序执行,...

    linux C++ 实现线程池(避免线程创建的耗时)

    1. **线程池的概念**:线程池是一组预先创建并处于就绪状态的线程集合,当有新任务到来时,线程池中的空闲线程会被分配去执行任务,而不是每次都新建线程。这种设计减少了线程创建和销毁的时间,降低了系统资源的...

    java多线程、并发及线程池介绍收藏的几篇文档

    Java多线程、并发以及线程池是Java编程中至关重要的概念,特别是在处理高并发、高性能的系统设计时。以下是对这些主题的详细说明: 1. **Java 程序中的多线程** - 多线程允许一个程序同时执行多个任务,提高程序...

    史上最强多线程面试44题和答案:线程锁+线程池+线程同步等

    - **新建状态**:当一个新的线程对象被创建时,线程处于新建状态。 - **就绪状态**:当调用`start()`方法后,线程进入就绪状态,等待被调度。 - **运行状态**:线程被调度并开始执行。 - **阻塞状态**:线程因等待...

    VC_simple-thread-pool.rar_thread pool_vc thread_vc 线程池_vc线程_线程池

    线程池的核心思想是避免频繁地创建和销毁线程,而是维护一个线程集合,当有新的任务需要执行时,线程池会从现有的线程中挑选一个来执行任务,而不是每次都新建一个线程。这种机制减少了线程创建和销毁的开销,提高了...

    concurrent线程池的实现技术分析

    当有新任务提交时,线程池会根据当前线程数量和设定的策略来决定是新建线程执行任务还是将任务放入队列等待。如果达到最大线程数且队列已满,线程池将根据预设的阻塞行为处理新任务。 **线程池算法** 1. **基本...

    C++线程池 多线程 SOCEKT服务器框架

    当有新的任务到来时,线程池会从待用线程中挑选一个执行任务,而不是每次都新建线程。这种方式提高了系统的稳定性和效率。 接下来,我们探讨一下SOCKET,它是网络编程中的一个重要概念。SOCKET是操作系统提供的接口...

    C++线程池,带PPT 线程池

    当有新的任务需要执行时,线程池会从已存在的线程中选择一个来执行,而不是每次都新建线程。这种设计模式可以避免频繁地创建和销毁线程带来的性能损失,同时也能更好地控制系统的并发程度,防止过多的线程消耗资源...

    java线程池概念.txt

     当这14个工人当中有人空闲时,而新任务增长的速度又比较缓慢,工厂主管可能就考虑辞掉4个临时工了,只保持原来的10个工人,毕竟请额外的工人是要花钱的。  这个例子中的corePoolSize就是10,而maximumPoolSize...

    C#多线程开发之并发编程经典实例.zip

    6. **线程状态**:线程有多种状态,如新建(New)、可运行(Runnable)、挂起(Suspended)、等待(WaitSleepJoin)、终止(Stopped)等。`Thread.ThreadState`属性可以查看线程当前状态。 7. **异步编程**:C# 4.0...

    su线程池,对大量线程却运行时间短的解决方案

    当有任务需要执行时,线程池会从待用线程中选择一个执行新任务,而不是每次都新建一个线程。这样,系统可以减少线程管理的开销,同时避免了大量线程并发时可能引发的上下文切换问题,提高了整体性能。 在C语言中...

    VC_Thread_Pools.rar_Pools_VC线程池_vc 多线程_多线程多任务_线程池

    线程池是一种管理线程的机制,它预先创建一组线程,当有新的任务需要执行时,线程池会从已创建的线程中分配一个来执行任务,而不是每次都新建线程。这种设计提高了系统的效率,因为创建和销毁线程都需要一定的开销。...

    java线程、线程池、xml解析入门

    在学习这些知识时,初学者可以通过创建简单的多线程程序来实践,比如实现一个生产者消费者模型,或者利用线程池处理并发请求。对于XML解析,可以尝试读取和解析配置文件,或者通过XML与Java对象之间的绑定进行数据...

    100行Java代码构建一个线程池

    当有新任务到达时,线程池会从已存在的线程中选择一个来执行任务,而不是每次都新建线程。这样可以避免频繁创建和销毁线程,提高系统资源利用率,同时还能更好地控制系统的并发程度。 【线程与进程】 线程是操作...

    Linux C语言 线程池 状态机 并发处理Demo

    首先,线程池是一种线程管理机制,它预先创建了一组线程,待有任务需要执行时,从池中获取空闲线程,而不是每次都新建线程。这种方式可以避免频繁创建和销毁线程带来的开销,提高系统的响应速度和效率。在`tpool.c`...

    java并发编程:线程基础

    Executor框架是Java并发编程中的重要工具,它简化了线程池的管理,例如`CachedThreadPool`、`FixedThreadPool`和`SingleThreadExecutor`,分别对应于动态线程池、固定大小线程池和单线程线程池,可以根据需要选择...

    Android中的线程池与任务队列

    3. `CachedThreadPool`:线程池大小可变,有空闲线程时复用,没有则新建,适合处理大量短生命周期的任务。 在Android中,线程池和任务队列的使用通常与异步处理、UI更新、后台服务等场景紧密相关。例如,我们可以...

    基于线程池的WebServer

    线程池的核心思想是预先创建并维护一组线程,而不是每次有任务时都创建新的线程。这种设计模式可以避免频繁创建和销毁线程带来的开销,因为线程的创建和销毁都需要时间,并且过多的线程会消耗大量的系统资源。线程池...

    05-Java多线程并发编程JUC.pdf

    根据提供的文档内容,以下是关于Java多线程并发编程与JUC知识点的详细解读: 1. 线程的状态 Java线程在其生命周期中可以拥有不同的状态。线程可能处于以下几种状态: - 新建(New):线程被创建时的状态。 - 就绪...

    java面试第二部分:多线程与锁

    线程有六种状态:NEW(新建)、RUNNABLE(运行中)、BLOCKED(阻塞)、WAITING(永久等待)、TIMED_WAITING(定时等待)和TERMINATED(已终止)。 **sleep()与wait()** sleep()来自Thread类,不释放锁,用于暂停...

Global site tag (gtag.js) - Google Analytics