คำนำ
มัลติเธรดเป็นสิ่งที่เรามักจะพบในระหว่างกระบวนการพัฒนาและยังเป็นผู้เชี่ยวชาญที่ขาดไม่ได้และจำเป็น เมื่อเรารู้ว่าเราจำเป็นต้องทำการพัฒนาแบบมัลติเธรดสิ่งแรกที่เราต้องรู้คือวิธีการใช้มัลติเธรดแบบมัลติเธรดนั่นคือวิธีที่เราควรสร้างเธรด
การสร้างเธรดใน Java นั้นเหมือนกับการสร้างการดำเนินการวัตถุสำหรับคลาสธรรมดา เราสามารถสร้างเธรดได้สองวิธี:
1. สืบทอดคลาสเธรดและแทนที่วิธีการเรียกใช้ ()
2. ใช้อินเทอร์เฟซ Runnable และใช้วิธีการเรียกใช้ ()
วิธีที่ 1: สืบทอดคลาสเธรด
รหัสนั้นง่ายมาก
ครั้งแรกที่โอเวอร์โหลดคอนสตรัคเตอร์เพื่อให้เราสามารถตั้งชื่อเธรดได้
เขียนวิธีการเรียกใช้ () ใหม่
ก่อนอื่นเราให้เธรดส่งออกชื่อเธรด + เริ่ม
จากนั้นส่งออกชื่อเธรด + หมายเลขที่เพิ่มขึ้นทุก ๆ 5ms
/*** สร้างโดย Holten.gao เมื่อปี 2016/10/17 */คลาสสาธารณะ ThreadThread ขยายเธรด {Public ThreadThread (ชื่อสตริง) {super (ชื่อ); } @Override โมฆะสาธารณะ Run () {system.out.println (this.getName ()+"เริ่มต้น!"); สำหรับ (int i = 0; i <10; i ++) {system.out.println (this.getName ()+""+i); ลอง {thread.sleep (5); } catch (interruptedException e) {e.printStackTrace (); -วิธีที่ 2: ใช้อินเทอร์เฟซ Runnable
รหัสนั้นง่ายมาก
ใช้วิธีการเรียกใช้ ()
ก่อนอื่นเราให้เธรดส่งออกชื่อเธรด + เริ่ม
จากนั้นส่งออกชื่อเธรด + หมายเลขที่เพิ่มขึ้นทุก ๆ 5ms
/*** สร้างโดย Holten.gao เมื่อปี 2016/10/17 */คลาสสาธารณะ RunnableThread ใช้งาน Runnable {@Override โมฆะสาธารณะ Run () {System.out.println (thread.currentthread (). getName ()+"เริ่ม!"); สำหรับ (int i = 0; i <10; i ++) {system.out.println (thread.currentthread (). getName ()+""+i); ลอง {thread.sleep (5); } catch (interruptedException e) {e.printStackTrace (); -ผลการทดสอบ
รหัสทดสอบ
/*** สร้างโดย Holten.gao เมื่อปี 2016/10/17 */คลาสสาธารณะหลัก {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {เธรดเธรด streadthread = new ThreadThread ("ThreadThread"); threadthread.start (); เธรด runnableThread = เธรดใหม่ (ใหม่ runnableThread (), "runnableThread"); runnableThread.start (); -ผลการทดสอบ
threadThread start! threadThreadThread 0runnableThreated เริ่มต้น! runnableThread 0THREADTREAD 1RUNNABLETHREAD 1THREADTREAD 2RUNNABLETHREAD 2THREADREADREAD 3RUNNABLETHREADREDREADREADREDREADREDREKREADREDREKREADREDREADREDREADREDREKREDREKREDRED 8RunNableThread 9
การเปรียบเทียบทั้งสองวิธี
1. เนื่องจาก Java รองรับการสืบทอดเดี่ยวเท่านั้นการใช้วิธีหนึ่งจึงไม่สามารถสืบทอดคลาสอื่นได้ ในขณะที่การใช้อินเทอร์เฟซในวิธีการที่สองจะไม่ส่งผลกระทบต่อการสืบทอดของคลาสอื่น ๆ
2. วิธีที่ 1: เนื่องจากมันสืบทอดเธรดคุณสามารถเริ่มต้นใหม่ได้โดยตรง; ในขณะที่วิธีที่ 2: คุณต้องผ่านวัตถุเป็นพารามิเตอร์ลงในวัตถุเธรดเพื่อรับวัตถุเธรด
3. ในวิธีการหนึ่งคุณสามารถรับชื่อเธรดได้โดยตรงผ่าน this.getName; ในขณะที่อยู่ในวิธีที่สองคุณจะต้องได้รับเธรด currentthread (). getName ()
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น