- 博客(7)
- 收藏
- 关注
原创 并发编程(六)java Thread.start()源码解读
线程对象在初始化完成之后,调用start()方法就可以启动这个线程。线程start()方法的含义是:当前线程(即parent线程)同步告知Java虚拟机,只要线程规划器空闲应立即启动调用start()
2022-12-06 15:09:23 344 1
原创 并发编程(五)java Thread.init()源码解读
一个新构造的线程对象是由其parent线程来进行空间分配的,而child线程继承了parent是否为Daemon、优先级和加载资源的contextClassLoader以及可继承的ThreadLocal,同时还会分配一个唯一的(sync)ID来标识这个child线程。至此,一个能够运行的线程对象就初始化好了,在堆内存中等待着运行。
2022-11-30 22:31:24 535
原创 并发编程(四)java线程状态转换
在Thread源码中有有一个内部枚举类State,其中标注了6中状态,网上也有好多说7种状态。其实是运行状态中细分了运行中和就绪状态(通过yield()方法调用,也可以是没有抢到cpu时间片)
2022-11-29 21:39:54 135
原创 并发编程(三)java线程状态log日志解读 - Stack log 解读
我们可能在平时会用到jstack命令,进行线程状态查看,下面简单解读一下jstack中日志。其中有示例代码进行演示。
2022-11-28 22:25:25 1451
原创 并发编程(二)java线程优先级和守护线程
本文介绍了java的线程的优先级和守护线程,在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10。Java虚拟机中不存在非守护线程的时候,Java虚拟机会退出。
2022-11-27 01:41:37 1389
原创 并发编程(一)java运行总共有几条线程?
在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。 当前的main函数就是一个 JVM 进程。 打印出来的6条线程信息就是进程中的多条线程
2022-11-25 23:51:49 549
原创 Java并发篇:volatile为什么不能多条保证原子性 ?volatile为什么能保证单条原子性?
我个人总结理解的两方面影响: j简单举例说明,就不用看下面详细解释了: i=0; A,B2个线程各i++ 50000次 1.线程A 读到i=0时,A阻塞,B也读到i=0,进行i++ 写到主存,此时i=1,A继续执行进行i++,i=1写回主存。 2.MESI协议中,AB同时进行修改i,此时裁决机制进行裁决设A为M状态,B为I状态,那么B修改无效,并且浪费一次,A进行i++把i=1写回主存。 分别执行三次,每次结果各不相同: 输出最后结果:93873 输出最后结果:80319 输出最后结果:9
2022-05-11 00:58:18 996 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人