线程相关问题

8 篇文章 0 订阅
2 篇文章 0 订阅
本文深入解析了BIO和NIO的区别,介绍了线程的基本状态和创建方式,探讨了线程池的优点与常见类型,并剖析了线程安全和ConcurrentHashMap的实现。理解这些核心概念有助于提升并发应用的性能和管理。
摘要由CSDN通过智能技术生成
线程相关问题(一)附答案
  1. 什么是BIO和NIO?

    1. BIO是Blocking I/O,同步阻塞I/O模式;数据的读写在一个线程里进行操作,在连接数小的情况下,这种模式是比较不错的,可以让每一个连接专注自己的I/O且编程模式简单,不需要考虑其他的限流、过载等问题,适用于低并发的应用。
    2. NIO是NO-Blacking或New I/O,非同步阻塞的I/O模型;并且是面向缓存的,基于通道的I/O的方法,适用于高并发的应用。
  2. 线程的基本状态是什么?

    线程的基本状态分为六大种

    • NEW:新建线程,未使用start方法
    • BLOCKED:线程未获得CPU的时间片,阻塞状态
    • WAITING:线程等待状态,待唤醒
    • TIME_WAITING:线程等待状态,一定时间之后自动结束等待
    • TERMINAL:线程死亡,线程以及执行完毕
    • RUNNABLE:线程执行状态
  3. 创建线程的方式有有什么区别?

    线程创建有四种:Thread、Runnable、Callable、Exector

    • 继承Thread类,和实现其他两个接口;java是单继承,接口可以多和实现,使用接口有利于代码的灵活性
    • Runable和Callable是run方法没有返回值,call方法有返回值
    • 继承Thread类,如果需要调用当前线程直接使用this关键字就行;实现接口的话需要使用Thread.CurrentThread方法
    • 线程的创建和归还需要花费大量的内存资源,如果使用线程池的话,不使用的情况下直接放入线程池里面即可,无需资源的消耗,立取即用。
  4. 线程池有什么优点?

    1. 减少线程创建和归还的内存资源的消耗
    2. 方便线程的管理:线程是稀缺资源,不能无限的创建而导致性能的下降
    3. 提高响应速度,取线程比创建线程的速度当然快
  5. 常用的线程池有什么?

    • 固定大小的线程池:NewfixedThreadPool
    • 单线程的线程池:NewsingleThreadExectorPool
    • 具有缓冲的线程池:NewCacheThreadPool
    • 定时以及周期执行的线程池:NewScheduledThreadPool
  6. 线程池的常用工作队列有什么?

    • 可设置容量的队列:LinkedBlockingQueue
    • 有界队列:ArrayBlockingQueue
    • 基于优先级的队列:PriorityBlockingQueue
    • 同步的队列:SynchronousQueue
    • 延迟队列:DelayedWorkQueue
  7. 线程池的拒绝策略是什么?

    1. 丢弃并抛异(拒绝执行异常)常默认策略:AbortPolicy
    2. 丢弃但不抛异常:DiscardPolicy
    3. 丢给线程处理,谁调用谁执行:CallerRunpolicy
    4. 丢弃最旧的任务,接收此任务:DisCardOldPolicy
  8. 什么是线程安全?如何保证线程安全?

    线程安全是指在一些高并发的线程执行下,对数据进行的一系类安全操作,某一进程访问数据,其他不能访问,防止数据的不一致和数据污染

    保证线程安全:使用线程安全的类和使用synchronize锁等

  9. ConcurrentHashMap是如何实现线程安全的?

    1. JDK7时候底层使用的是Segment锁进行数据的分段加锁,当一个线程访问数据时,另一个线程也可以访问其他资源;
    2. JDK8使用的是synchronize锁和CAS进行加锁,锁的是当前链表或者红黑树的根节点,若不产生Hash冲突效率还能提高N倍。
  10. 什么是上下文切换?

    一般对于线程的说法,线程在抢夺CPU时间片时候进行切换,是操作系统中时间消耗最大的操作。

    一般情况下线程个数多于CPU的核心个数,而CPU在一个时间段内只能对一个线程进行操作,为了让线程都得到的有效执行,CPU采取的操作是时间片轮换(操作系统方面的),当一个线程对CPU的时间片执行完成,然后别的线程从就绪状态切换到执行状态,CPU的时间片给别的线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值