Mengikut reka bentuk, ThreadLocal harus wujud bergantung pada kewujudan Thread Setiap thread boleh mempunyai ruang untuk penyimpanan, jadi saya sangat bersetuju dengan point kedua anda, Saya Tidak cukup boleh difahami. Jika anda meletakkan map dalam ThreadLocal mengikut reka bentuk anda, maka map ini mestilah daripada static (atau pembolehubah ahli dalam ThreadLocal tunggal), yang akan menyebabkan masalah serius dalam reka bentuk . , ini map akan menjadi sangat sukar untuk diuruskan:
1. 试想有没有线程安全问题?
2. 线程销毁后怎么处理,不做处理这个map将会越来越大?
Reka bentuk mempunyai satu set kaedah, dan juga falsafah, yang mesti dinikmati dengan teliti.
Sesetengah reka bentuk kadangkala bukan hanya untuk prestasi Anda mesti tahu bahawa Java memberi perhatian yang paling besar kepada corak reka bentuk, dan tanggungjawab tunggal adalah salah satu prinsip yang paling penting dalam corak reka bentuk. Sebaliknya, bukankah lebih pantas untuk melaksanakan Peta secara langsung dalam ThreadLocal daripada menggunakan Map secara langsung Namun, ini jelas melanggar tanggungjawab tunggal dan menjadikan penyelenggaraan lebih mahal?
Jika ThreadLoad secara langsung menggunakan Map<Thread, Object> sebagai struktur data asas, apabila sebilangan besar utas menggunakan ThreadLocal, pertama sekali prestasi akses Map akan berkurangan Bersama-sama dengan kitaran hayat thread, Map yang mendasari perlu ditambah dan dipadamkan dengan kerap, yang boleh menyebabkan kesesakan prestasi dengan mudah.
Mengikut reka bentuk,
ThreadLocal
harus wujud bergantung pada kewujudanThread
Setiap thread boleh mempunyai ruang untuk penyimpanan, jadi saya sangat bersetuju dengan point kedua anda, Saya Tidak cukup boleh difahami.Jika anda meletakkan
map
dalamThreadLocal
mengikut reka bentuk anda, makamap
ini mestilah daripadastatic
(atau pembolehubah ahli dalamThreadLocal
tunggal), yang akan menyebabkan masalah serius dalam reka bentuk . , inimap
akan menjadi sangat sukar untuk diuruskan:Reka bentuk mempunyai satu set kaedah, dan juga falsafah, yang mesti dinikmati dengan teliti.
Sekurang-kurangnya satu perkara yang saya boleh fikirkan ialah:
Terdapat senario: Untuk meningkatkan prestasi DateFormat, ia biasanya digabungkan dengan ThreadLocal.
Sesetengah reka bentuk kadangkala bukan hanya untuk prestasi Anda mesti tahu bahawa Java memberi perhatian yang paling besar kepada corak reka bentuk, dan tanggungjawab tunggal adalah salah satu prinsip yang paling penting dalam corak reka bentuk.
Sebaliknya, bukankah lebih pantas untuk melaksanakan Peta secara langsung dalam ThreadLocal daripada menggunakan Map secara langsung Namun, ini jelas melanggar tanggungjawab tunggal dan menjadikan penyelenggaraan lebih mahal?
Jika ThreadLoad secara langsung menggunakan Map<Thread, Object> sebagai struktur data asas, apabila sebilangan besar utas menggunakan ThreadLocal, pertama sekali prestasi akses Map akan berkurangan Bersama-sama dengan kitaran hayat thread, Map yang mendasari perlu ditambah dan dipadamkan dengan kerap, yang boleh menyebabkan kesesakan prestasi dengan mudah.