Java并发篇
文章平均质量分 72
Lovely小猫
这个作者很懒,什么都没留下…
展开
-
并发编程(六)java Thread.start()源码解读
线程对象在初始化完成之后,调用start()方法就可以启动这个线程。线程start()方法的含义是:当前线程(即parent线程)同步告知Java虚拟机,只要线程规划器空闲应立即启动调用start()原创 2022-12-06 15:09:23 · 346 阅读 · 1 评论 -
并发编程(五)java Thread.init()源码解读
一个新构造的线程对象是由其parent线程来进行空间分配的,而child线程继承了parent是否为Daemon、优先级和加载资源的contextClassLoader以及可继承的ThreadLocal,同时还会分配一个唯一的(sync)ID来标识这个child线程。至此,一个能够运行的线程对象就初始化好了,在堆内存中等待着运行。原创 2022-11-30 22:31:24 · 538 阅读 · 0 评论 -
并发编程(四)java线程状态转换
在Thread源码中有有一个内部枚举类State,其中标注了6中状态,网上也有好多说7种状态。其实是运行状态中细分了运行中和就绪状态(通过yield()方法调用,也可以是没有抢到cpu时间片)原创 2022-11-29 21:39:54 · 137 阅读 · 0 评论 -
并发编程(三)java线程状态log日志解读 - Stack log 解读
我们可能在平时会用到jstack命令,进行线程状态查看,下面简单解读一下jstack中日志。其中有示例代码进行演示。原创 2022-11-28 22:25:25 · 1460 阅读 · 0 评论 -
并发编程(二)java线程优先级和守护线程
本文介绍了java的线程的优先级和守护线程,在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10。Java虚拟机中不存在非守护线程的时候,Java虚拟机会退出。原创 2022-11-27 01:41:37 · 1390 阅读 · 0 评论 -
并发编程(一)java运行总共有几条线程?
在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。当前的main函数就是一个 JVM 进程。 打印出来的6条线程信息就是进程中的多条线程原创 2022-11-25 23:51:49 · 555 阅读 · 0 评论 -
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 · 999 阅读 · 5 评论