Saya telah membaca Java Concurrency in Practice oleh Brian Goetz dan di dalam bagian Stack Confinement disebutkan bahwa setiap utas mendapatkan tumpukannya sendiri dan variabel lokal secara intrinsik terbatas pada utas pelaksana; mereka ada di tumpukan thread yang sedang dieksekusi, yang tidak dapat diakses oleh utas lainnya. Apa maksudnya bahwa setiap utas memiliki tumpukan eksekusi sendiri?
java
multithreading
concurrency
stack
Kutu buku
sumber
sumber
Jawaban:
Anda tahu kapan Anda membobol debugger untuk alasan apa pun, dan IDE memberi Anda jejak stack? Dan setiap metode (stack frame) memiliki set variabel lokal sendiri yang dapat Anda periksa di debugger?
Itulah "tumpukan eksekusi" dari program Anda. Ini menunjukkan seperti apa kondisi lokal program Anda saat ini. Apa yang penulis katakan adalah bahwa setiap utas mendapat tumpukan eksekusi yang berbeda seperti itu. Ini memiliki tumpukan panggilan sendiri, dan masing-masing metode memiliki variabel lokal mereka sendiri.
Karena variabel disimpan sebagai bagian dari tumpukan eksekusi dan bukan di heap, mereka unik untuk utas yang sedang dijalankan dan tidak dapat dibagi secara langsung. Anda dapat menyalinnya, atau meneruskan referensi ke objek ke utas lain dengan berbagai cara, jadi itu sebagian besar merupakan perbedaan akademis.
sumber