ในบางกรณีเราจำเป็นต้องกำหนดพูลเธรดที่แตกต่างกันเพื่อดำเนินการหลายงานในโครงการ ดังนั้นงานที่แตกต่างกันจึงถูกควบคุมโดยการตรวจสอบพูลเธรดที่แตกต่างกัน เพื่อให้ได้สิ่งนี้จำเป็นต้องมีการกำหนดค่าพูลแบบมัลติเธรดในโครงการ
Spring Boot ให้การกำหนดค่าพูลเธรดที่เรียบง่ายและมีประสิทธิภาพและโซลูชันการใช้งาน
การกำหนดค่า
ก่อนอื่นกำหนดค่าถั่วพูลเธรดที่จะส่งมอบให้กับการจัดการฤดูใบไม้ผลิ:
@ConfigurationPublic คลาส taskexecutepool {@bean (name = "threadpoola") public threadpooltaskexecutormytaskasyncpool () {threadpooltaskexecutor executor = new ThreadPoolTaskexecutor (); Executor.SetCorePoolSize (4); Executor.SetMaxPoolsize (8); Executor.SetQueUecapacity (100); Executor.SetKeepaliveseconds (60); Executor.SetThreadNamePrefix ("Pool-A"); Executor.SetRejectedExecutionHandler (ใหม่ threadpoolexecutor.CallerRunspolicy ()); Executor.initialize (); ส่งคืนผู้บริหาร; } @Bean (name = "ThreadPoolb") Public ThreadPoolTaskexecutorAsyNcPoolb () {ThreadPoolTaskexecutor Executor = ใหม่ ThreadPoolTaskexecutor (); Executor.SetCorePoolSize (2); Executor.SetMaxPoolsize (4); Executor.SetQueUecapacity (8); Executor.SetKeepaliveseconds (60); Executor.SetThreadNamePrefix ("Pool-B"); // นโยบายที่ใช้เมื่อจำนวนงานเกิน MaxPoolSize และ QueueCapacity นโยบายนี้คือการเรียกเธรดของงานเพื่อดำเนินการ execute.setRejectedExecutionHandler (ใหม่ threadpoolexecutor.callerrunspolicy ()); Executor.initialize (); ส่งคืนผู้บริหาร; - ใช้
การใช้เธรดต้องใช้คำอธิบายประกอบในวิธีการดำเนินการเท่านั้นและคลาสของวิธีจะต้องถูกกำหนดเป็นถั่วและส่งมอบให้กับฤดูใบไม้ผลิเพื่อจัดการ
คุณสามารถใช้คำอธิบายประกอบ @component, @Service ฯลฯ ในชั้นเรียน
@async (value = "threadpoola") โมฆะสาธารณะ taska () {... } ตรวจสอบจำนวนเธรดที่ใช้งานอยู่:
@autowired Private Threadpooltaskexecutor Threadpoola; // ชื่อตัวแปรคือชื่อของชื่อถั่วพูลที่กำหนดไว้ โมฆะสาธารณะตรวจสอบความเป็นไปได้
แน่นอนว่ามีวิธีการอื่นดังนั้นฉันจะไม่ให้ตัวอย่างใด ๆ ที่นี่
ความเข้าใจในแต่ละแอตทริบิวต์ของพูลเธรด:
CorePoolsize: แสดงถึงเธรดหลักของเธรดพูลและจำนวนเธรดที่เปิดภายใต้สถานการณ์ปกติ
QueueCapacity: เมื่อเธรดหลักกำลังทำงานอยู่ก็ยังมีงานพิเศษที่จะบันทึกไว้ที่นี่
MaxPoolSize: หาก QueueCapacity เต็มจะเริ่มเธรดเพิ่มเติมจนกว่าจำนวนเธรดจะมาถึง MaxPoolSize หากยังคงมีงานจะต้องดำเนินการตามนโยบายการปฏิเสธ
มีกลยุทธ์การปฏิเสธมากมาย:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น