<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liushuailei的博客]]></title><description><![CDATA[我只是感觉运气不好，从来没有怀疑过自己的才华]]></description><link>https://blog.youkuaiyun.com/qq_35489012</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_35489012]]></copyright><item><title><![CDATA[并发编程（六）java Thread.start()源码解读]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/128203354</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/128203354</guid><author>qq_35489012</author><pubDate>Tue, 06 Dec 2022 15:09:23 +0800</pubDate><description><![CDATA[线程对象在初始化完成之后，调用start()方法就可以启动这个线程。线程start()方法的含义是：当前线程（即parent线程）同步告知Java虚拟机，只要线程规划器空闲应立即启动调用start()]]></description><category></category></item><item><title><![CDATA[并发编程（五）java Thread.init()源码解读]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/128123797</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/128123797</guid><author>qq_35489012</author><pubDate>Wed, 30 Nov 2022 22:31:24 +0800</pubDate><description><![CDATA[一个新构造的线程对象是由其parent线程来进行空间分配的，而child线程继承了parent是否为Daemon、优先级和加载资源的contextClassLoader以及可继承的ThreadLocal，同时还会分配一个唯一的（sync）ID来标识这个child线程。至此，一个能够运行的线程对象就初始化好了，在堆内存中等待着运行。]]></description><category></category></item><item><title><![CDATA[并发编程（四）java线程状态转换]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/128105869</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/128105869</guid><author>qq_35489012</author><pubDate>Tue, 29 Nov 2022 21:39:54 +0800</pubDate><description><![CDATA[在Thread源码中有有一个内部枚举类State，其中标注了6中状态,网上也有好多说7种状态。其实是运行状态中细分了运行中和就绪状态（通过yield()方法调用，也可以是没有抢到cpu时间片）]]></description><category></category></item><item><title><![CDATA[并发编程（三）java线程状态log日志解读 - Stack log 解读]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/128088692</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/128088692</guid><author>qq_35489012</author><pubDate>Mon, 28 Nov 2022 22:25:25 +0800</pubDate><description><![CDATA[我们可能在平时会用到jstack命令，进行线程状态查看，下面简单解读一下jstack中日志。其中有示例代码进行演示。]]></description><category></category></item><item><title><![CDATA[并发编程（二）java线程优先级和守护线程]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/128060017</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/128060017</guid><author>qq_35489012</author><pubDate>Sun, 27 Nov 2022 01:41:37 +0800</pubDate><description><![CDATA[本文介绍了java的线程的优先级和守护线程，在Java线程中，通过一个整型成员变量priority来控制优先级，优先级的范围从1~10。Java虚拟机中不存在非守护线程的时候，Java虚拟机会退出。]]></description><category></category></item><item><title><![CDATA[并发编程（一）java运行总共有几条线程？]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/128046431</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/128046431</guid><author>qq_35489012</author><pubDate>Fri, 25 Nov 2022 23:51:49 +0800</pubDate><description><![CDATA[在一个进程里可以创建多个线程，这些线程都拥有各自的计数器、堆栈和局部变量等属性，并且能够访问共享的内存变量。处理器在这些线程上高速切换，让使用者感觉到这些线程在同时执行。
当前的main函数就是一个 JVM 进程。 打印出来的6条线程信息就是进程中的多条线程]]></description><category></category></item><item><title><![CDATA[Java并发篇：volatile为什么不能多条保证原子性 ？volatile为什么能保证单条原子性？]]></title><link>https://blog.youkuaiyun.com/qq_35489012/article/details/124700431</link><guid>https://blog.youkuaiyun.com/qq_35489012/article/details/124700431</guid><author>qq_35489012</author><pubDate>Wed, 11 May 2022 00:58:18 +0800</pubDate><description><![CDATA[我个人总结理解的两方面影响：

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]]></description><category></category></item></channel></rss>