[問題] 不同執行緒 讀到不同資料

作者: autumnk (3O6p)   2016-03-13 17:09:34
因為原本就使用在設計模式下的架構
在抽象類別的地方使用了蠻多的static
來當作是類似全域變數的功能
(就是所有繼承抽象的class,抓取相同的變數來動作)
但是現在需要使用多執行緒,來實現不同的功能
每個執行緒會包相同的設計模式的架構
但是不同的執行緒
設計模式內部的資料是要不一樣的
請問這有什麼好辦法解決嗎
不知道有沒有人看得懂我在問什麼.....
作者: m339606 (mize)   2016-03-13 18:19:00
不明白
作者: ssccg (23)   2016-03-13 19:01:00
不懂為什麼在不同class要共用的變數卻在不同thread不共用..感覺一般設計上要兩套一樣的會是生兩套instance,不會是同一套然後寫成static,再用thread去拆兩套..也許當初用static共用而不是用DI注入同一個變數就錯了不過還是回你的問題,不同thread各一份可以用ThreadLocal
作者: GoalBased (Artificail Intelligence)   2016-03-13 19:27:00
為了設計模式而設計模式吧..
作者: Litfal (Litfal)   2016-03-14 02:39:00
設計模式下的架構怎麼會常用static...只有簡單工廠明顯用到吧。喔,還有獨體模式然後你抽象類大量用到外部變數(也就是你寫成static的)就要認真考慮一下你的OOAD是不是有問題...我猜你的static裡面放的是config參數,請把他們的static去掉,做成instance,然後用獨體模式來存取。然後你不同執行續使用不同config的需求,只需要使用不同的config instance,其他部分應該幾乎不用改獨體模式是指你平常使用,實際上還是用instance而不是static field, 多執行續只需要改成各自new instance就好

Links booklink

Contact Us: admin [ a t ] ucptt.com