最新回答 / 慕斯0128424
这么跟你解释:一行java代码被cpu执行的时候执行的是若干条cpu指令,synchronized对应到cpu执行若干条指令,但是volatile也对应若干条指令,相同的是他们对应的指令有一些相同的,即有重叠,但是又有差异,于是功能有相同也有差异。他们的使用场景也是如此。你现在不适合去理解深沉原理,先学会用,用对场景。
2016-07-28
已采纳回答 / BetterTomorr
1、main线程为主线程, 还有 写线程 和 读线程, 可简单理解为程序中总共有这3个线程(3个线程轮流执行, 主线程等待 写线程 和 读线程执行完毕 最后程序运行终止)(主线程的任务或作用 就是 执行main 方法中的代码指令(即启动 写线程 和 读线程))2、程序分析如下:a、首先 主线程运行 , 启动了 写线程后 主线程进入休眠(此时 因为主线程休眠了,而 读线程还没有启动(需要主线程来启动)), 所以只有/仅有 写线程 获取CPU执行权, 因为写线程本身的任务简单,在主线程休眠的1秒时间内足够...
2016-04-20
最新回答 / 慕斯0128424
synchronized是java语言特性,join()方法你可以理解为仅仅是Thread类作者提供的一个觉得可能较为通用的工具方法。在B对象的方法中执行ThreadA.join()方法,其结果是在B对象方法调用处,通过死循环检测ThreadA是否死亡(isAlive()方法),如果死亡(理解为ThreadA的run()方法运行结束)则继续B对象的方法后续代码执行。建议阅读join()方法源码
2016-02-22
已采纳回答 / sxian_wang
慢了不就不会刷新了。。。CPU运算快的话,在分配的时间片内就能完成所有工作:工作内从1->主内存->工作内存2,然后这个线程就释放CPU时间片,这样一来就保证了数据的可见性。如果是慢了话CPU强行剥夺该线的资源,分配给其它线程,该线程就需要等待CPU下次给该线程分配时间片,如果在这段时间内有别的线程访问共享变量,可见性就没法保证了。
2015-12-02
最新回答 / qq_可口可乐_4
线程是抢占式执行的,sleep意味着当前线程在一段时间内不执行操作,可是该线程的工作内存中已经得到了number,没有改变number的值意味着主内存中的值也没有改变,在sleep这段时间内其他线程又得到主内存中的number,这个number与sleep中的number可能一样(要是没有其它线程),这样的话这2个线程在最终执行完之后等于number++只执行一次
2015-12-02
最新回答 / 雲中菩提
首先,你这休眠的是线程 main,并不会影响到synDemo读写线程的正常运行。而且就算你休眠的是synDemo的写线程,但只要它拿到了锁,那么读线程就会是堵塞状态,直到写线程释放了锁。最好还是先看看书或关于线程的博文,对同步,锁有所了解,然后再来看此视频。
2015-11-12