Java 进程与线程那些事

简介: 本文目录1. 进程与线程2. 线程的情况3. 线程池

1. 进程与线程

1,首先进程是比较重量级的,有单独的内存区域,所以进程比较安全(没人跟你抢地方,除非你自己又建立几个线程,那就是线程的事情了)。当然安全是有代价的——建立和销毁进程的开销远大于线程。


2,线程是比较轻量级的,但是因为线程会共享内存,导致可能出现安全性问题。所以务必要保证多个线程访问同一资源时,要么这些线程都不改变资源,要么在改变资源的情况下同一时间只有一个线程可以改变资源(同时的情况下只有一个线程独占资源)。


2. 线程的情况

1,毫无疑问,使用多个线程比使用多个进程处理任务速度要快。


2,一个Java虚拟机可以创建多少个进程是不好说的,因为有的进程可能浪费很多资源(比如一个进程疯狂的开几百个线程同时访问很多资源)。最简单例子,咱们看下windows资源管理器里面占用内存最小的几个进程,可见最小的进程占用24K内存,好大一块哦,可见进程是创建不了多少的。

image.png

3,那么线程能创建多少呢,这个是有个大约的数字的。一般的服务器最大的并发线程数在几千到几万,至于到底能并发多少还得看服务器配置、线程具体占用资源情况。


4,如果线程太多呢,当然内存就耗尽了,然后Java虚拟机没内存可以用就快要GG了。


3. 线程池

1,实际上大多数情况下是不需要建立几百甚至上千个线程的,一般情况下100个线程处理能力就很强了,通过使用线程池可以极大的提高线程的利用效率。


2,所谓的线程池就是搞上一些线程,完成任务后不销毁,而是标记为空闲状态,然后这些线程再给其他排队的任务用。


3,因为不用为每个任务生成新线程,不用一直销毁、新建线程,所以会节省很多开销。


4,一般来说100个线程处理300-900个连接问题不大,因为连接并不会集中发生,具体的情况还要以实际测试为准。

相关文章
|
1天前
|
监控 Java 调度
Java并发编程:深入理解线程池
【6月更文挑战第26天】在Java并发编程的世界中,线程池是提升应用性能、优化资源管理的关键组件。本文将深入探讨线程池的内部机制,从核心概念到实际应用,揭示如何有效利用线程池来处理并发任务,同时避免常见的陷阱和错误实践。通过实例分析,我们将了解线程池配置的策略和对性能的影响,以及如何监控和维护线程池的健康状况。
7 1
|
2天前
|
数据采集 Java Unix
10-多线程、多进程和线程池编程(2)
10-多线程、多进程和线程池编程
|
2天前
|
安全 Java 调度
10-多线程、多进程和线程池编程(1)
10-多线程、多进程和线程池编程
|
1天前
|
开发框架 安全 .NET
技术好文共享:进程和线程的区别
技术好文共享:进程和线程的区别
|
1天前
|
存储 缓存 Java
老程序员分享:Java并发编程:线程池的使用
老程序员分享:Java并发编程:线程池的使用
|
1天前
|
开发框架 安全 .NET
程序技术好文:进程和线程的区别
程序技术好文:进程和线程的区别
|
1天前
|
Java 数据库连接 调度
Java多线程,对锁机制的进一步分析
Java多线程,对锁机制的进一步分析
|
1天前
|
Java
Java多线程notifyAll()方法
Java多线程notifyAll()方法
|
2天前
|
存储 设计模式 并行计算
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
|
2天前
|
Java 测试技术 开发者
Java并发编程:深入理解线程池
本文将带领读者深入了解Java中的线程池,探索其内部机制、使用场景以及如何有效地利用线程池来提高程序的性能和可维护性。我们将通过实例演示如何创建和配置线程池,并讨论常见的并发模式和最佳实践。文章旨在为开发者提供实用的线程池应用知识,帮助他们在面对多线程编程挑战时,能够设计出更加高效和稳定的系统。