zoukankan      html  css  js  c++  java
  • JAVA面试:第二章多线程 (未完结)

    线程池的原理,运行顺序,java队列原理,几个方法有啥区别(arrayblockingqueue和linkednlockqueue,首尾,锁,多少个锁)

    线程池的错误怎么排查(阿里规范里有,不能用原生的ThreadPoolExecutor,要重写线程池,过程和几个重要的点)

    • 如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。

    线程池的优势:

    • 线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。
    • 线程池不仅能够保证内核的充分利用,还能防止过分调度。
    • 可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。

    阿里巴巴规范:

    • 线程池不允许使用Executors创建,而是通过ThreadPoolExecutor的方式,这样可以明确的运行规则,规避资源耗尽的风险

    • newFixedThreadPool和newSingleThreadExecutor 的弊端:
      
    都是无界队列,允许的队列长度都是Integer.MAX_VALUE, 请求可能大量堆积,最后造成JVM的OOM内存溢出
    
    • newCachedThreadPool 的弊端:
    允许的创建线程数量为Integer.MAX_VALUE, 可能创建出大量线程,最后造成JVM的OOM内存溢出
    

    synchronized的原理,锁如何升级的

    juc的lock实现原理

    juc的并发工具类(AutomicInteger,CountDownLatch,CyclicBarrier,Condition,Semaphore)

  • 相关阅读:
    python datetime,字符串,时间戳相互转换
    python在linux环境读取access数据库mdb文件
    ruby 随机字符串rand方法避坑
    gin 页面重定向
    go语言 goquery爬虫
    Rails项目防止时序攻击
    Authorization With Pundit
    Rails/ActiveRecord order by Array
    java线程池
    Java安全API
  • 原文地址:https://www.cnblogs.com/JMrLi/p/13935893.html
Copyright © 2011-2022 走看看