`

多线程知识-java

阅读更多

RPC---->线程模型优化

   ---->java5引入锁机制   

        普通锁对象、读写锁对象。

   ---->java5的线程通讯机制

   ---->java5直接提供了线程池

           ---->最早的方式我们是每连接每线程

  ---->Reactor模式是一个线程可以处理多个连接

      不需要做并发控制,简化了实现

      不能充分利用CPU的优势,因为只有一个线程,

      该线程需要执行所有的操作:accept,read,decode,compute,encode,send

      实际中decode,encode,compute如果很耗时,则该线程就不能及时

      响应其它客户的请求

  ---->Reactor的多线程模式

       也不可能无线的创建线程

还是要用线程池控制

 

           ---->要求大家熟练java5线程池的操作。

  ---->难点:线程池的大小到底应该设置为多少。

       公式:线程池中的线程数量=(线程总时间/瓶颈资源时间)*瓶颈资源的线程并行数

    如果线程数少了,QPS减少,CPU使用率不够

    如果线程数多了,线程本身的资源消耗,CPU压力变大。QPS也会降低。

案例:有这样一个模块:

     线程同步锁(数据库的事务锁) 50ms

     cpu时间 18ms

     查询数据库,网络IO 80MS

     解析结果2ms,如果服务器有两个CPU,这个模块多少线程合适

 

     如果CPU是瓶颈资源

         线程数=(18+2+50+80)/20 * 2 = 15

     如果数据库的事务锁是瓶颈资源

         线程数=(50+18+2+80)/50 * 1 = 3;

 

   ---->CallAble和Future

   ---->java5线程中提供了阻塞队列的操作。

   ---->java5中提供了丰富的同步工具

   ---->java5提供了更丰富的性能更好的集合类

   ---->那么如何在Reactor中使用多线程的方式。

         

分享到:
评论

相关推荐

    面试-Java一些常见面试题+题解之多线程开发-JavaConcurrent.zip

    本资料集合了Java面试中与多线程相关的常见问题及解答,旨在帮助求职者充分准备这一关键领域的知识。 1. **线程的概念与创建** - 线程是程序执行的最小单位,一个进程可以包含多个线程。 - Java中创建线程有两种...

    JAVA线程高级-线程按序交替执行

    在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。...通过熟练掌握上述知识点,开发者可以更好地驾驭Java的多线程环境,实现高效的并发编程。

    头歌java多线程基础-Java多线程基础详解与实战指南

    内容概要:本文详细介绍了Java多线程的基础...其他说明:本文通过实际案例和代码示例,深入浅出地讲解了Java多线程的核心知识点,有助于初学者快速入门并进阶。建议在学习过程中亲自编写并调试代码,以加深理解和记忆。

    Java多线程知识点总结

    了解线程池的概念也是Java多线程编程中的一个重要知识点。线程池是一种多线程处理形式,它将线程和任务的概念分离开来,能够有效管理线程资源,减少线程创建和销毁的开销,提高程序性能。Java中可以通过Executors类...

    java多线程同步问题

    多线程注意:wait()方法的调用要有判定条件常用 while () obj.wait(timeout, nanos); ... // Perform action appropriate to condition } synchronized会影响共享数据,但对其他语句的执行不会有规律了!

    第五讲-Java对象运行机制与多线程2019-V31

    在本讲"第五讲-Java对象运行机制与多线程2019-V31"中,我们将深入探讨Java编程语言的核心概念,特别是Java对象的运行机制和多线程。这些知识点对于理解和优化Java程序的性能至关重要。 首先,Java是一种面向对象的...

    java多线程源码-source

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。接下来,我们将深入探讨这两个方法以及相关的...

    人工智能-项目实践-多线程-java基础进阶 包括:socket,多线程,反射,servlet,动态代理等高级知识.zip

    人工智能-项目实践-多线程-java基础进阶。包括:socket,多线程,反射,servlet,动态代理等高级知识 java基础进阶。包括:socket,多线程,反射,servlet,动态代理等高级知识

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    多线程精品资源--Java NIO+多线程实现聊天室.zip

    在Java编程中,多线程和非阻塞I/O(NIO)是两个核心概念,它们在...通过实践这些示例,开发者不仅可以提升对Java多线程和NIO的理解,还能掌握如何将理论知识应用到实际项目中,为构建更复杂、高效的应用打下坚实基础。

    高并发多线程处理demo-java.rar

    在Java编程领域,高并发和多线程是关键的技术之一,尤其在服务器端应用和大数据处理中至关重要。这个"高并发多线程处理demo-java.rar"压缩包提供了一个实际的Java实现,展示了如何构建一个并发队列来接收数据,并...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要...通过对这些知识点的学习和实践,读者可以深入理解Java多线程的运用,提升编程技能。

    java 多线程操作数据库

    ### Java多线程操作数据库:深入解析与应用 在当今高度并发的应用环境中,Java多线程技术被广泛应用于处理数据库操作,以提升系统的响应速度和处理能力。本文将基于一个具体的Java多线程操作数据库的应用程序,深入...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

    多线程精品资源--java-study 是本人学习Java过程中记录的一些代码!从Java基础的数据类型、jdk1..zip

    【标题】中的“多线程精品资源--java-study”表明这是一个关于Java多线程学习的资源集合,而“是本人学习Java过程中记录的一些代码!”则提示这是一份个人学习笔记,包含了作者在掌握Java多线程编程时编写的示例代码...

    63-Java多线程知识点总结1

    Java多线程知识点总结 Java多线程知识点总结主要讲解了Java中多线程编程的基础知识,包括线程的启动、volatile变量、多线程共享数据、wait、notify、notifyAll等。 线程的启动 在Java中,线程的启动可以通过start...

    Java 多线程与并发-Java并发知识体系详解.pdf

    Java并发编程是Java开发中的重要领域,涉及到多线程、并发控制、同步机制等多个知识点。以下是对Java并发知识体系的详细解析。 首先,我们要理解并发的理论基础。并发是为了提高系统资源利用率和处理能力,让多个...

    Java基础知识培训 Java基础教程-Java基础知识全套PPT课件 共9个章节.rar

    【完整课程列表】 Java基础[01-Java概述].pdf Java基础[02-Java基础语法1].pdf ...Java基础[05-多线程].pdf Java基础[06-集合].pdf Java基础[07-IO].pdf Java基础[08-GUI].pdf Java基础[09-网络编程].pdf

    java多线程分页查询

    ### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...

    Java多线程-知识点梳理和总结-超详细-面试知识点.docx

    "Java多线程-知识点梳理和总结-超详细-面试知识点" Java多线程是Java编程语言中最基本也是最重要的概念之一。多线程编程可以提高程序的执行效率、改善用户体验和提高系统的可扩展性。但是,多线程编程也存在一些...

Global site tag (gtag.js) - Google Analytics