สวัสดีตอนบ่าย.
มีคำถามสัมภาษณ์แบบนี้ครับ
คุณรู้วิธีสร้างเธรดมีกี่วิธี? หมายเลข 2 ปรากฏในคำตอบ: สร้าง
Thread
ส่งผ่าน
Runnable
หรือสร้างอ็อบเจ็กต์ของคลาสสืบทอด
Thread
โดยที่
run()
. แต่ฉันสงสัยว่ามันเป็นสองเหรอ?
concurrent
ตัวอย่างเช่นหากคุณใช้
Executors.newFixedThreadPool(5)
เมื่อมีการสร้างอ็อบเจ็กต์เธรด ทันทีที่ดำเนินการเมธอดนี้ หรือหลังจากนั้น เมื่องานปรากฏขึ้นเพื่อดำเนินการ (ท้ายที่สุดแล้ว งานเหล่านั้นอาจไม่ปรากฏขึ้น) วิธีการจากโรงงานทั้งหมดนี้ส่งคืนการกำหนดค่าบางประเภท
ThreadPoolExecutor
ซึ่งมีหนึ่งในพารามิเตอร์การกำหนดค่า
corePoolSize
มีการเขียนเกี่ยวกับฟิลด์นี้:
corePoolSize
– จำนวนเธรดที่จะเก็บไว้ในพูล
แม้ว่าจะไม่ได้ใช้งานก็ตามเว้นแต่
allowCoreThreadTimeOut
จะถูกตั้งค่าไว้ หากงานไม่มาถึง เราก็สร้างคนงานที่ไม่ได้ใช้งาน 5 คน บางทีพวกเขาอาจจะเริ่มถูกสร้างขึ้นเมื่องานเริ่มมาถึง?
โดยทั่วไปแล้วยังสามารถคำนึงถึงตัวเลือก 2 หรือ 3 ตัวเพื่อเป็นคำตอบสำหรับคำถามได้
GO TO FULL VERSION