V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  crossoverJie  ›  全部回复第 12 页 / 共 33 页
回复总数  650
1 ... 8  9  10  11  12  13  14  15  16  17 ... 33  
2018-09-03 12:59:16 +08:00
回复了 crossoverJie 创建的主题 分享创造 「造个轮子」——cicada(轻量级 WEB 框架)
@bk201 #3 目前只有基本特性,后面会持续更新。
2018-09-03 11:16:58 +08:00
回复了 crossoverJie 创建的主题 分享创造 「造个轮子」——cicada(轻量级 WEB 框架)
第一版还比较粗糙。bug 多功能少,不过五脏俱全。https://ws2.sinaimg.cn/bmiddle/62e721e4gw1et00rujyz4j200k00k3y9.jpg
2018-09-01 12:49:02 +08:00
回复了 ZY2071 创建的主题 Blogger 个人博客
又来刷日常了。

https://crossoverjie.top
2018-08-22 00:31:43 +08:00
回复了 Reyunn 创建的主题 Java Java 如何后续学习?!
2018-08-13 20:31:06 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
2018-08-13 16:22:48 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
@XXneet #23 多谢支持
2018-08-13 16:22:05 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
2018-08-13 11:40:30 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
@zhengxiaowai #19 把涉及到 Java 的去掉,我觉得大部分开发都适合。
2018-08-13 10:30:51 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
2018-08-13 10:03:06 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
@kios 是的 还是要多实践
2018-08-13 10:02:17 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
@michaelcheng 嗯 现在就家里上厕所的时候翻翻
2018-08-13 09:01:24 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
@crossoverJie #4 顺便。。
2018-08-13 09:00:22 +08:00
回复了 crossoverJie 创建的主题 程序员 如何成为一位「不那么差」的程序员
@abmin521 #3 随便宣传一波 不过这篇真心撸了很久 https://ws3.sinaimg.cn/bmiddle/62e721e4gw1et02ek7u61j200k00k3y9.jpg
2018-07-27 00:59:37 +08:00
回复了 crossoverJie 创建的主题 程序员 HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
@zpxshl #42

如果 A 线程写入成功之后 B 线程就算是恰巧在 A 线程还未写入之前判断到是空进入了 CAS 的逻辑。

由于最终调用的还是 casTabAt()

https://ws2.sinaimg.cn/large/006tKfTcgy1ftnr3mdivaj30fp01sjrj.jpg

底层调用的是 unsafe.compareAndSwapObject 方法,他的期望是当前值为 null ,才会写入一个新的 Node。

由于该方法是线程安全的,此时当前值已经不为 null 了,所以必定会写入失败。

还有一个是,虽然是用 volatile 修饰的数组,但是用的是 getObjectVolatile 和 putObjectVolatile,依然可以保证可见性。

见:

https://stackoverflow.com/questions/31534706/about-unsafe-getobjectvolatile-usage
2018-07-25 13:09:23 +08:00
回复了 crossoverJie 创建的主题 程序员 HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
@zpxshl #40 兄弟,我觉得这没有啥问题呀。

https://ws1.sinaimg.cn/large/006tKfTcly1ftm0tehm4vj316w0ra44o.jpg

用 CAS 的前提是,遍历数组的时候在 key 所映射的那个位置是空的,也就是没有其他线程使用的时候才会在 2 处利用 CAS 尝试写入一个 Node。

也就是说写入成功的话是不会有线程竞争的,这样也就不会存在你说的可见性问题(如果这时有线程来做 get ,恰好也定位到这个位置,那在写入线程更新成功之前获取的肯定也是空)。

如果写入失败,CAS 返回 false,这样就会重新从 1 处再次循环。

这样如果当前位置有数据了那就会用 synchronized 来写,用 synchronized 的话也不会出现可见性问题。

如果当前位置依然为空的话就会重复上面的步骤。
2018-07-25 10:28:51 +08:00
回复了 crossoverJie 创建的主题 程序员 HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
@zpxshl #38 如何保证其他线程见到你的修改?

其他线程在 tabAt()

https://ws1.sinaimg.cn/large/006tNc79ly1ftlw9yuc6vj31ac0jytdg.jpg

这里不就获取了到最新值了嘛?也就是获取到了其他线程的修改。

get 的时候也是一样的:

https://ws3.sinaimg.cn/large/006tNc79ly1ftlwdb31v2j31620k2djy.jpg
2018-07-25 09:05:00 +08:00
回复了 crossoverJie 创建的主题 程序员 HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
@zpxshl #36 嗯 你不是问的怎么保证可见性嘛,获取到的是最新值就不会有可见性的问题了。
1 ... 8  9  10  11  12  13  14  15  16  17 ... 33  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3216 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 11:07 · PVG 19:07 · LAX 03:07 · JFK 06:07
Developed with CodeLauncher
♥ Do have faith in what you're doing.