前言: 本文承接自上篇:iOS即時通訊進階 - CocoaAsyncSocket源碼解析(Connect篇) 注:文中涉及代碼比較多,建議大家結合源碼一起閱讀比較容易能加深理...
前言: 本文承接自上篇:iOS即時通訊進階 - CocoaAsyncSocket源碼解析(Connect篇) 注:文中涉及代碼比較多,建議大家結合源碼一起閱讀比較容易能加深理...
@李鼎
在五一前最后一天工作日早上摸魚之際看到簡書消息,受到您的認可,我個人是很開心的,關于您的邀請我思索了一下還是決定拒絕,原因大概有下面幾點
1. 又再看了一些源碼,發現已經提供了TtlExecutors與相關ExecutorService實現線程池包裝,其中由于subit(Runnable)每次都會包裝新的TtlRunnable對象,會出發即時的現場數據抓取,因此前面提到的功能思考在部分使用用法中已經conver了,那么剩余問題就變成了對于重復使用的TtlRunnable如何處理,那么也很簡單,在構造函數中提供外部可管理的 new AtomRerence(capture)就好,比如在構造函數中加參數??傊A想中實現并不復雜,但問題應該不會這樣簡單,基礎庫應該考慮到使用者的心智負擔和兼容性,如果貿然提供與之前使用邏輯不一致的能力,很可能引發誤用,導致口碑下滑,由于目前對線程池包裝對重新生成TtlRunnable對象做組織,是直接復用該對象的,如果貿然更改可能導致歷史使用用法中ThreadLocal數據發生與預期不一致的變化,比如有些人在另一個與創建TtlRunnable時無關的子線程去submit,此時數據一定會變化,這樣就可能造成人家業務方功能異常??傊绾渭嫒菔莻€問題,需要耗費想法去思考解決
2. 在分析問題后,為啥我不愿意行動呢,原因可能比較奇葩,我本人的背景并不是java服務,坦白講對于您這個庫的核心使用場景我是缺乏具體體會的,前面提到的使用場景兼容性問題我預計就會有些思路門檻。另外,我個人對于這個庫總共也就看了個把小時,看的過程目標也只是分析主干內容學習精髓,目前還沒有深入該庫的打算,作為android開發背景,在我的認知中這個庫的使用場景確實有限,對于我應該不值得投入過量的精力。最主要的還是我近期是在做系統性的知識復習,本身缺乏時間,五一也有其他安排,因此對于您的好意我目前只能表示抱歉
感謝您的贊賞,我本人也非常開心能與開源作者進行溝通
TransmittableThreadLocal詳解1、簡介 TransmittableThreadLocal 是Alibaba開源的、用于解決 “在使用線程池等會緩存線程的組件情況下傳遞ThreadLocal” 問題的 In...
另外個人覺得,在構造ttlrunnable對象的時候就收集現場數據時機有點早,應該還是submit的時候收集數據最好。runnable可能有復用場景,tl.set方法按理說在submit前面用應該比較常見。(當然我并不是站在適配現有工程實現的角度,硬要說的話,字節碼操作也能換掉)
TransmittableThreadLocal詳解1、簡介 TransmittableThreadLocal 是Alibaba開源的、用于解決 “在使用線程池等會緩存線程的組件情況下傳遞ThreadLocal” 問題的 In...
我倒是覺得精髓在AtomReference保存thread內的threadlocalmap中部分數據作為現場快照這里。holder只是一個當前線程中threadlocalmap部分key的保存容器,源碼里還有從register里自定義的threadlocal可注冊,他本質上是在決定需要抓取哪些現場數據,只是實現方式是通過了一個全局的inherentthreadlocal作為收納threadlocalmap key的容器,實現了在set數據時自動登記,從而避免手動關聯(例如避免了構造ttlrunable時主動將關心的ttl對象綁定到上面),這是一個優雅實現,但核心還在是在跨線程分享快照數據這里,只有能跨線程保存數據,才能重新布置現場并恢復現場
TransmittableThreadLocal詳解1、簡介 TransmittableThreadLocal 是Alibaba開源的、用于解決 “在使用線程池等會緩存線程的組件情況下傳遞ThreadLocal” 問題的 In...
要使用 HttpURLConnection,最好對一些基礎概念有所認識,比如 TCP/IP 協議,HTTP 報文, Socket 等。先談一些我的認識,有可能不完全正確: S...
一個是Callback中的handleMessage,一個是Handler中的handleMessage,肯定調用不到啊
https://blog.csdn.net/sinat_35512245/article/details/55051306