zoukankan      html  css  js  c++  java
  • 线程知识点

    并发:同一时刻应对多件事情的能力。

    并行:同一时刻动手做多件事情的能力。

    守护线程也称服务线程,优先级较低。

    通过setDaemon(true)来设置线程为守护线程。

    操作系统线程状态:新建、就绪、运行、阻塞、死亡

    Java线程状态:

    1. NEW:新建状态;
    2. RUNNABLE:运行状态,JAVA 线程把操作系统中的就绪和运行两种状态统一称为“运行中”
    3. BLOCKED:阻塞状态
    4. WAITING:等待状态
    5. TIMED_WAITING:超时等待状态
    6. TERMINATED:终止状态

    线程池状态:

    1. RUNNING:正常的状态,接受新的任务,处理等待队列中的任务。
    2. SHUTDOWN:不接受新的任务提交,但是会继续处理等待队列中的任务。
    3. STOP:不接受新的任务提交,不再处理等待队列中的任务,中断正在执行任务的线程。
    4. TIDYING:所有的任务都销毁了,workCount 为 0,线程池的状态在转换为 TIDYING 状态时,会执行钩子方法 terminated()。
    5. TERMINATED:terminated()方法结束后,线程池的状态就会变成这个

    线程池中 submit() 和 execute() 方法有什么区别?

    • submit()有返回值,而execute()没有;
    • submit()可以进行Exception处理;

    多线程中 synchronized 锁升级的原理是什么?

      在锁的对象头中有一个threadId字段,当第一次访问时threadId为空,jvm让其持有偏向锁,并将threadId设置为当前线程Id,再次进入的时候会判断threadId和当前线程Id是否一致,如果不一致则

    升级偏向锁为轻量级锁。通过自旋一定的次数来获取锁,如果还没有获取到锁则升级轻量级锁为重量级锁。

    锁升级的目的?

      锁升级是为了降低锁带来的性能消耗。(JDK1.6之后才引入的)

    synchronized 底层实现原理?

      由一对 monitorenter/monitorexit 指令实现的

  • 相关阅读:
    socket的accept函数解析
    c socket(续)
    C socket指南
    网络字节序和本机字节序
    jar包
    RESTful API 设计指南[转]
    理解RESTful架构[转]
    c语言正则表达式
    Fedora设置中文
    创建框架结构的页面2
  • 原文地址:https://www.cnblogs.com/chenpt/p/13740122.html
Copyright © 2011-2022 走看看