JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #159. วงจรชีวิตของเธรดใน Java อินเทอร์เฟซการทำ...

คอฟฟี่เบรค #159. วงจรชีวิตของเธรดใน Java อินเทอร์เฟซการทำงานและวิธีการเริ่มต้นใน Java 8

เผยแพร่ในกลุ่ม

วงจรชีวิตของเธรดใน Java

ที่มา: ปานกลาง บทความนี้กล่าวถึงสถานะวงจรการใช้งานที่แตกต่างกันของเธรดใน Java คอฟฟี่เบรค #159.  วงจรชีวิตของเธรดใน Java  อินเทอร์เฟซการทำงานและวิธีการเริ่มต้นใน Java 8 - 1วงจรชีวิตของเธรดใน Java ส่วนใหญ่ประกอบด้วยการเปลี่ยนเป็นสถานะต่างๆ โดยเริ่มจากการเกิดเธรดและสิ้นสุดด้วยการสิ้นสุดเธรด เธรดพร้อมที่จะทำงานเมื่อมีการสร้างและเริ่มต้นโดยการเรียกเมธอดstart ()ใน คลาส Thread เมื่อเรียกเมธอดsleep()หรือwait() ของคลาส Thread เธรดจะไม่สามารถใช้งานได้ ในการจัดการเธรดโดยทางโปรแกรม การระบุสถานะของเธรดเป็นสิ่งสำคัญ มาทำความเข้าใจว่าวงจรชีวิตของเธรด Java กำหนดสถานะของเธรดอย่างไร นี่คือสิ่งที่เอกสาร Java พูดเกี่ยวกับสิ่งนี้: เธรดคือพาธการทำงานของโปรแกรมที่สามารถเข้าสู่หนึ่งในห้าสถานะในระหว่างวงจรชีวิต:
  1. ใหม่
  2. รันได้
  3. วิ่ง
  4. ถูกบล็อก
  5. ตาย
1. ใหม่ (สถานะทารกแรกเกิด)เกิดขึ้นเมื่อคุณสร้างวัตถุเธรดในคลาสเธรด โฟลว์ถูกสร้างขึ้นและอยู่ในสถานะ "เกิดใหม่" นั่นคือเมื่อเธรดถูกสร้างขึ้น เธรดจะเข้าสู่สถานะใหม่ แต่ ยังไม่ได้เรียกใช้เมธอด start()บนอินสแตน ซ์ 2. รันได้ สถานะนี้หมายความว่าเธรดพร้อมที่จะรัน เมื่อ เรียกใช้เมธอด start()บนเธรดใหม่ ก็พร้อมที่จะเริ่มต้น ในสถานะนี้ เธรดจะรอจนกว่าโปรเซสเซอร์จะพร้อมใช้งาน (เวลา CPU) นั่นคือเธรดจะกลายเป็นคิว (ชุด) ของเธรดที่รอดำเนินการ 3. วิ่ง (สถานะวิ่ง) การดำเนินการหมายความว่าโปรเซสเซอร์ได้จัดสรรช่วงเวลาสำหรับเธรดที่จะดำเนินการ นี่คือสถานะที่เธรดดำเนินการฟังก์ชันจริง 4. ถูกบล็อก (สถานะถูกบล็อก) เธรดอยู่ในสถานะที่ถูกบล็อกเมื่อหยุดชั่วคราว เข้าสู่โหมดสลีป หรือรอสักครู่เพื่อให้ตรงตามเงื่อนไขที่กำหนด 5. สถานะมรณะ เงื่อนไขนี้เกิดขึ้นเมื่อ เมธอด run()เสร็จสิ้นการดำเนินการตามคำแนะนำ เธรดจะหยุดหรือเข้าสู่สถานะตายโดยอัตโนมัติ กล่าวอีกนัยหนึ่ง เมื่อเธรดออกจาก เมธอด run()เธรดนั้นจะยุติหรือกลายเป็นใช้งานไม่ได้

อินเทอร์เฟซการทำงานและวิธีการเริ่มต้นใน Java 8

ที่มา:สื่อ ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับการเปลี่ยนแปลงบางอย่างที่นำมาใช้ใน Java 8 ได้แก่ อินเทอร์เฟซการทำงานและวิธีการเริ่มต้น

วิธีการเริ่มต้นคืออะไร?

เรารู้ว่าคลาสนามธรรมสามารถมีวิธีนามธรรมและไม่ใช่นามธรรม (วิธีการที่นำไปใช้) แต่อินเทอร์เฟซนั้นเป็นนามธรรม 100% (วิธีการทั้งหมดเหล่านี้มีเพียงลายเซ็นและไม่มีการใช้งาน) แต่จะเป็นอย่างไรหากเราต้องการอินเทอร์เฟซแทนที่จะเป็นคลาสและฟังก์ชันทั่วไปในคลาสที่นำไปใช้งานทั้งหมด เนื่องจากโค้ดการใช้งานจะถูกทำซ้ำซ้ำแล้วซ้ำอีกในแต่ละคลาสที่ใช้อินเทอร์เฟซ เพื่อหลีก เลี่ยง ปัญหานี้ Java 8 ได้เพิ่ม คำหลักเริ่มต้น หากเรามีวิธีการที่ใช้ในอินเทอร์เฟซ จะต้องกำหนดคีย์เวิร์ดเริ่มต้นให้กับวิธีการนั้น มิฉะนั้นเราจะได้รับข้อผิดพลาดรันไทม์

อินเทอร์เฟซการทำงานคืออะไร?

อินเทอร์เฟซเชิงฟังก์ชันนั้นไม่มีอะไรนอกจากอินเทอร์เฟซที่มีวิธีนามธรรมวิธีเดียวและวิธีการมาตรฐานหรือแบบคงที่จำนวนเท่าใดก็ได้ ตัวอย่างของอินเทอร์เฟซการทำงานคือ Comparable ซึ่งมีวิธีนามธรรมวิธีหนึ่งคือcomparisonTo () ในทางกลับกัน Runnable ก็มี เมธอด run()และอื่นๆ นอกจากนี้เรายังสามารถแสดงอินเทอร์เฟซการทำงานโดยใช้คำอธิบายประกอบ @FunctionalInterface ช่วยให้มั่นใจได้ว่าอินเทอร์เฟซจะมีวิธีนามธรรมเพียงวิธีเดียวเท่านั้น:
@FunctionalInterface
public interface MyfunctionalInterface{
   public void myabstractmethod();
   public static void method1(){
       //Имплементация
    }
   public default void method2(){
       //Имплементация
    }
}

ประเภทของอินเทอร์เฟซการทำงาน

Consumer - รับหนึ่งอาร์กิวเมนต์และไม่ส่งคืนอะไรเลย
  • Consumer ทั้งสามรูปแบบ ได้แก่ DoubleConsumer, IntConsumer และ LongConsumer (ขึ้นอยู่กับประเภทของอาร์กิวเมนต์ที่ยอมรับ)
  • Bi-Consumer - รับสองข้อโต้แย้งและไม่ส่งคืนอะไรเลย
ภาคแสดง - รับหนึ่งอาร์กิวเมนต์และส่งกลับค่าบูลีน
  • ภาคแสดงสามรูปแบบ ได้แก่ DoublePredicate, IntPredicate และ LongPredicate (ขึ้นอยู่กับประเภทของอาร์กิวเมนต์ที่ยอมรับ)
  • Bi-Predicate - รับสองอาร์กิวเมนต์และส่งกลับค่าบูลีน
ฟังก์ชั่น - รับหนึ่งอาร์กิวเมนต์และส่งคืนค่าหนึ่งค่า
  • มีฟังก์ชันหลายเวอร์ชันให้เลือกใช้ในรูปแบบอาร์กิวเมนต์ โดยที่int , longและdoubleถูกใช้บ่อยที่สุด
  • Bi-Function - รับสองอาร์กิวเมนต์และส่งคืนค่าหนึ่งค่า
  • ตัวดำเนินการ Unary และ Binary ใช้ Function และ Bi-Function ตามลำดับ แต่เงื่อนไขเพิ่มเติมที่นี่คืออินพุตและเอาต์พุตจะต้องเหมือนกันและเป็นประเภทเดียวกัน
ซัพพลายเออร์ - ไม่ยอมรับอินพุตใดๆ แต่ส่งคืนค่าเดียว เวอร์ชันต่างๆ ของ Supplier: BooleanSupplier, IntSupplier, LongSupplier และ DoubleSupplier ซึ่งประเภทการส่งคืนเป็นค่าพื้นฐานที่สอดคล้องกัน
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION