java - 为什么ThreadLocal 选择在线程中使用成员变量,而不是维护一个以线程为Key,值为value的集合?
阿神
阿神 2017-04-18 10:37:44
0
4
408
阿神
阿神

闭关修行中......

membalas semua(4)
大家讲道理

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.

黄舟

Sekurang-kurangnya satu perkara yang saya boleh fikirkan ialah:

Kurangkan kos pengecualian bersama

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!