• Java面试题(每天10题)-------连载(31)


    多线程篇

    注:今天只更新四题,明天就换别的了

    1、concurrent包下有哪些类?

    ConcurrentHashMap、Future、FutureTask、AtomicInteger...

    2、线程a、b、c、d运行任务,怎么保证当a、b、c线程执行完再执行d线程?

    1 CountDownLatch类
    ⼀个同步辅助类,常⽤于某个条件发⽣后才能执⾏后续进程。给定计数初始化 CountDownLatch ,调⽤ countDown ()⽅法,在计数到达零之前,await ⽅法⼀直受阻塞。
    重要⽅法为 countdown ()与 await ();
    2 join⽅法
    将线程 B 加⼊到线程 A 的尾部,当 A 执⾏完后 B 才执⾏。
    1. public class ThreadSerialize {
    2. public static void main(String[] args) throws Exception {
    3. Th t = new Th("t1");
    4. Th t2 = new Th("t2");
    5. t.start();
    6. t.join();
    7. t2.start();
    8. }
    9. }
    3 notify wait ⽅法, Java 中的唤醒与等待⽅法,关键为 synchronized 代码块,参数线程间应相同,也常⽤ Object 作为参数。

    3、高并发系统如何进行性能优化?如何防止库存超麦?

    1 、⾼并发系统性能优化:
    优化程序,优化服务配置,优化系统配置
    1. 尽量使⽤缓存,包括⽤户缓存,信息缓存等,多花点内存来做缓存,可以⼤量减少与数据库的交互,提⾼性能。
    2. jprofiler等⼯具找出性能瓶颈,减少额外的开销。
    3. 优化数据库查询语句,减少直接使⽤hibernate等⼯具的直接⽣成语句(仅耗时较⻓的查询做优化)。
    4. 优化数据库结构,多做索引,提⾼查询效率。
    5. 统计的功能尽量做缓存,或按每天⼀统计或定时统计相关报表,避免需要时进⾏统计的功能。
    6. 能使⽤静态⻚⾯的地⽅尽量使⽤,减少容器的解析(尽量将动态内容⽣成静态html来显示)。
    7. 解决以上问题后,使⽤服务器集群来解决单台的瓶颈问题。
    2 、防⽌库存超卖:
    1. 悲观锁在更新库存期间加锁,不允许其它线程修改;
      数据库锁:select xxx for update
      分布式锁;
    2. 乐观锁:使⽤带版本号的更新。每个线程都可以并发修改,但在并发时,只有⼀个线程会修改成功,其它会返回失败。
      redis watch:监视键值对,作⽤时如果事务提交exec时发现监视的监视对发⽣变化,事务将被取消。
    3. 消息队列:通过 FIFO 队列,使修改库存的操作串⾏化。
    4. 总结:总的来说,不能把压⼒放在数据库上,所以使⽤ "select xxx for update" 的⽅式在⾼并发的场景下是不可⾏的。FIFO 同步队列的⽅式,可以结合库存限制队列⻓,但是在库存较多的场景下,⼜不太适⽤。所以相对来说,我会倾向于选择:乐观锁 / 缓存锁 / 分布式锁的⽅式。 

    4、线程池的参数配置,为什么Java官方提供工厂方法给线程池?

     1、线程池简介:

    2、核心参数:

    3 、⼯⼚⽅法作⽤: ThreadPoolExecutor 类就是 Executor 的实现类,但 ThreadPoolExecutor 在使⽤上并不是那么⽅便,在实例化时需要传⼊很多歌参数,还要考虑线程的并发数等与线程池运⾏效率有关的参数,所以官⽅建议使⽤Executors ⼯程类来创建线程池对象。
  • 相关阅读:
    《设计模式》之代理模式
    Intel® 64 and IA-32 Architectures Software Developer’s Manual 读后感
    Spring Boot拓展XML格式的请求和响应
    【Linux】开始使用gdb吧!
    EXCEL函数
    netty系列之:在netty中实现线程和CPU绑定
    掌控互联网脉络:深入解析边界网关协议(BGP)的力量与挑战
    什么是渗透测试
    DXF读写:标注样式组码中文说明
    某国外知名HR:参与开源贡献求职者的简历,直接扔掉
  • 原文地址:https://blog.csdn.net/tgdmjhf/article/details/134412346