SnowMan_W
互斥锁,同一时间,只能 有一个线程持有该对象的引用,对该对象进行操作
嘻嘻T溦
不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变。
java内存中的变量都有指针引用,上下文引用成链,这个链是不会被打乱重排序的,只有没有数据依赖关系的代码,才会被冲排序,所以在单线程内部重排序不会改变程序运行结果,这就是as-if-serial
ziom
JVM
xxxxttttzzzz
synchronized是java语言特性,join()方法你可以理解为仅仅是Thread类作者提供的一个觉得可能较为通用的工具方法。在B对象的方法中执行ThreadA.join()方法,其结果是在B对象方法调用处,通过死循环检测ThreadA是否死亡(isAlive()方法),如果死亡(理解为ThreadA的run()方法运行结束)则继续B对象的方法后续代码执行。建议阅读join()方法源码
邱硕
理论上只有sleep时间足够长,这么去玩的话是可行的。但是在实际商业项目中,你是用多线程的目的很大可能性是提升性能,你这么做岂不是背初衷而驰?