1. jvm內(nèi)部分為主工作區(qū)和線程工作區(qū)。主工作區(qū)是實例的所有線程共有,線程工作區(qū)是實例的每個線程專有的工作區(qū),其中包括一些主工作區(qū)的一些實例字段數(shù)據(jù)的拷貝。
2. 服務(wù)器一般都有線程池,線程資源是可以重復(fù)利用的。你2000個用戶在線,不見得能又200個用戶同時(或者說并發(fā))訪問。再說,只要對象不是太大,我寧愿用200個拷貝,也不想讓用戶在這個200個任務(wù)的隊列里等待。
3. 兩個DB之間的復(fù)制數(shù)據(jù),每個DB各自使用自己的Sequane來生成id。復(fù)制數(shù)據(jù)時,如果DB中的外鍵是由DB維護的,則不會產(chǎn)生id沖突,如果外鍵是由外部程序維護的,則可能會產(chǎn)生錯誤!
4. 對于非static的類的數(shù)據(jù)成員來說,在該類產(chǎn)生的實例中都有一份,并且相互獨立(修改后并不影響其他實例), 但static的數(shù)據(jù)成員則變成了每個類只有一份,即在該類產(chǎn)生的所有實例共享這一個數(shù)據(jù)成員, 該數(shù)據(jù)成員的改變會影響到其他的實例. 而static的方法則是讓你不用創(chuàng)建對象及能調(diào)用這個方法.
5. ThreadLocal的作用就是將經(jīng)常要用到的對象的引用放到屬于線程自己的一個存儲空間中,在該線程的執(zhí)行過程中,可以通過類的靜態(tài)的ThreadLocal來方便的獲取到這個對象,而不用通過參數(shù)的形式傳來傳去。