美文网首页
线程以及java线程池实现分享

线程以及java线程池实现分享

作者: codingdd | 来源:发表于2015-05-12 16:06 被阅读0次

线程以及java线程池实现分享

  1. 线程简介
  2. JDK线程池的工作原理
  3. JDK线程池的实现细节

1.线程简介-由来

1.进程

process_m.png
****缺点****
1.性能,大量CPU与I/O操作
2.创建需要大量资源

2.线程模型

user_thread_1.png

3.线程实现--用户线程

user_thread_3.png

1.调度灵活,可定制高度算法
2.并不能完全解决阻塞问题

4.线程实现--内核线程

kernel_thread.png

5.Java线程例子

1.PS

ps.png

2.查看线程堆栈

jstack.png

3.查看所有线程

pself.png

POSIX标准

可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX),是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德·斯托曼应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。

POSIX线程标准
Linux系统从2.6版本开始使用了一套实现了POSIX线程标准的库-NPTL(native posix thread library)

2. JDK线程池的工作原理

线程池的主要功能部件

  1. 队列(不同的队列实现)
  2. ThreadFactory
  3. 多个线程(主要参数:corePoolSize,maximumPoolSize,keepAliveTime)
threadpool.png

工作流程

  1. 每个线程工作流程
work.png
  1. 整体工作流程
poolwork.png
  1. 队列

直接提交
工作队列的默认选项是 SynchronousQueue,生产和消费,当无等待消费的worker时,生产一定失败。 newCachedThreadPool。

queue.png

无界队列
使用无界队列(例如,不具有预定义容量的 LinkedBlockingQueue)将导致在所有 corePoolSize 线程都忙时新任务在队列中等待。这样,创建的线程就不会超过 corePoolSize。(因此,maximumPoolSize的值也就无效了。)当每个任务完全独立于其他任务,即任务执行互不影响时,适合于使用无界队列;newFixedThreadPool newSingleThreadExecutor。
有界队列
当使用有限的 maximumPoolSizes时,有界队列(如 ArrayBlockingQueue)有助于防止资源耗尽,但是可能较难调整和控制。队列大小和最大池大小可能需要相互折衷:使用大型队列和小型池可以最大限度地降低 CPU 使用率、操作系统资源和上下文切换开销,但是可能导致人工降低吞吐量。如果任务频繁阻塞(例如,如果它们是 I/O边界),则系统可能为超过您许可的更多线程安排时间。使用小型队列通常要求较大的池大小,CPU使用率较高,但是可能遇到不可接受的调度开销,这样也会降低吞吐量。

相关文章

  • 线程以及java线程池实现分享

    线程以及java线程池实现分享 线程简介 JDK线程池的工作原理 JDK线程池的实现细节 1.线程简介-由来 1....

  • java基础-多线程

    java线程池的实现 ThreadPoolExecutor java线程池几个参数 corePoolSize当线程...

  • java 实现自定义线程池

    java 实现自定义线程池 定义线程池接口 线程池接口的默认实现 示例摘抄于《Java并发变成的艺术》4.4.3线...

  • ThreadPoolExecutor线程池原理

    本文参考Java线程池---addWorker方法解析Java线程池ThreadPoolExecutor实现原理线...

  • java并发编程锁机制

    之前系列文章都在叙述java线程池的设计以及实现机制,没有涉及java并发编程的锁机制,这是因为锁机制与线程池是...

  • Java中线程池,你真的了解会用吗

    在《深入源码分析Java线程池的实现原理》这篇文章中,我们介绍过了Java中线程池的常见用法以及基本原理。 在文中...

  • ExecutorService

    ExecutorService扩展和实现Executor。 java 线程池的5种状态 RUNNING 线程池...

  • 线程池的原理

    参考 深入Java源码理解线程池原理 线程池是对CPU利用的优化手段 线程池使用池化技术实现,替他的实现还有连接池...

  • Java:线程池Executors.newFixedThread

    摘要:Java,多线程,线程池 多线程编程和线程池概述 (1)多线程程序: 计算机可以实现多任务 ( multit...

  • JAVA线程池常见用法及其原理

    JAVA线程池常见用法及其原理 JAVA线程池常见用法: 1.代码实现 import lombok.extern....

网友评论

      本文标题:线程以及java线程池实现分享

      本文链接:https://www.haomeiwen.com/subject/vcufqttx.html