zoukankan      html  css  js  c++  java
  • 《Java多线程核心技术》读书摘要

    Chapter1:

    进程是操作系统管理的基本单元,线程是CPU调到的基本单元。

    调用myThread.run()方法,JVM不会生成新的线程,myThread.start()方法调用两次JVM会报错。

    myThread.start() happen-before 于线程的每一个动作(《JVM高级特性与最佳实践》P376)

    sleep(int t)方法是Thread类的方法,让this.currentThread()在t ms内休眠,不释放琐。

    线程的停止有三个方法:

    ①thread.stop()对于某些非原子操作会造成数据不一致

    ②try catch+InterruptException+thread.interrupt()(推荐)

    ③设置flag

    suspend()和resume()可以暂停/恢复,但是suspend()不会释放锁,某些非原子操作不同步。

    线程的优先级是映射到操作系统中的,具有继承特点,CPU优先调用高优先级的线程,但不代表高优先级线程先执行完再执行低优先级线程。

    守护线程:当进程中不存在非守护线程了,守护线程就会自动销毁,典型的守护线程是垃圾回收线程。

    Chapter2:

    局部变量线程安全、实例变量和静态变量非线程安全。

    A线程持有object对象的Lock琐的时候,B线程可以以异步的方式调用object对象的非synchronize类型方法,但进入object对象的synchronize方法需等待

    synchronize拥有琐重入功能:ThreadA获取了一个对象锁之后,再次请求该对象锁时是可以再次得到该对象的琐的,同时子类可以通过可重入琐调用父类的同步方法。

    当一个线程执行的代码出现异常时,其所持有的琐会释放

    继承关系时,父方法同步,子方法不同步。

    synchronize同步块可以解决同步方法耗时太长的问题,synchronize(this)同步块和同步方法用的是用同一个对象锁。

    synchronize static 方法加锁 = synchronize(object.class)是Class琐。

    由于JVM具有String常量池缓存功能,大多数情况下synchronize代码块都不以String作为对象锁。

    volatile关键字只能修饰变量,具有可见性,不具有原子性。

    Chapter3:

    调用wait()之前,线程一定要获取琐,故一定要放在synchronize语句中,由于会抛出InterruptException异常,所以需要放到try-catch块里,notify()通知的线程由JVM决定

    必须执行完notify()所在的同步synchronized代码块之后才能释放锁。

    进程间通信,pipeStream

    join()遇到interrupt()方法之后会抛出异常。,join()内部使用wait()方法,因此会释放锁。

    ThreadLocal可以保证线程的隔离性,不同Thread只能get到自己的ThreadLocal的值;InheritableThreadLocal会逐级继承父类的ThreadLocal

    Chapter4:

    Lock+Condition

    ReentrantLock

    ReentreantReadLock

    Chapter5:

    Timer不是守护线程

    Chapter6:

    单例模式

    Chapter7:

    线程的状态

  • 相关阅读:
    vue的devTools谷歌插件安装使用
    springcloud(14)seata分布式事务
    springcloud(13)zipkin工具的使用
    springcloud(12)SentinelResource注解配置应用及其他
    springcloud(11)sentinel安装和基本使用
    springcloud(10)Nacos集群(windows环境)
    springcloud(9)Nacos基本操作
    springcloud(8)GateWay网关
    springcloud(7)hystrix服务熔断和dashboard
    通用语言
  • 原文地址:https://www.cnblogs.com/tonyluis/p/5663999.html
Copyright © 2011-2022 走看看