高并发编程详解--------读后感

本文深入探讨了Java中的高并发编程,从线程的创建与执行到Thread类的构造函数,详细解析了线程的生命周期、线程安全与数据同步。通过分析synchronized关键字的作用,讲解了如何避免死锁与实现线程间通信。此外,还介绍了类加载过程和线程池的实现原理,以及并发编程中的设计模式应用。
摘要由CSDN通过智能技术生成

高并发编程详解

第一章 快速认识线程
1.Thread源码中start方法中的会对线程状态进行判断(该状态是由jvm控制的,源码中看不到对状态改变赋枚举值这部分的代码)
threadStatus的状态由JVM控制。

2.线程的执行单元就是run方法。创建线程只有一种方式就是构造Thread对象然后调用.start()才算是创建了一个线程。如果一个类继承Thread时就会重写Thread类的run方法,如果这个类实现了runable,就要实现run方法,并且这个类没有start方法,还是要构造一个Thread对象,并且将该对象作为Thread对象的构造参数传入(高内聚,低耦合思想),源码中thread中的run方法会先判断是否有构造参数runable,有的话就执行runable的执行单元run方法,没有的话就什么都不做,

3使用到的第一个设计模式---------------------------策略模式
Thread和runable的目的是为了将线程控制(start…)和业务逻辑(run)分割开,这使用了一种设计模式(策略模式)。一种应用场景:不同系统对我们权限系统请求要求返回不同格式的数据,权限系统可以一个接口,实现这个接口的类,分为多种,不同的了类实现不同的数据格式转换。

第二章 深入理解Thread的构造函数
1.Thread的构造函数中都会执行一个init方法在这个方法中用一个currentThread()(获取当前线程),但是此时我们只是构造一个线程对象并不是一个线程,所以说当前线程就是创建我们线程对象的一个已经存在线程(默认是jvm启动的main线程),也就是说,每一个线程都是由另一个线程创建的,也就是说每一个线程都是有一个创建他的父线程。

2.如果构建thread对象时不指定线程组的话,就会在对象执行start方法的时候将线程本身加入父线程所在的线程组中

3.Init方法中有一个特殊的的方法参数(stackSize 可以通过jvm -Xss设置大小,默认是0),这个参数对应的就是jvm内存模型中的虚拟机栈,线程私有的,在jvm运行时动态创建的,它的大小反映了线程方法调用的层次深度(栈的特性ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值