ตระหนักถึงผลกระทบ:
The Crashing Thread Man: (เธรดเดี่ยว)
เมื่อเธรดหลักกำลังประมวลผลคำขอเพื่อรีเฟรชภาพมันไม่สามารถยอมรับคำขออื่น ๆ ได้ดังนั้นจึงตกอยู่ในสถานะลูปตายที่ปิดกั้น
วาดภาพ
นำเข้า java.awt.graphics; นำเข้า java.awt.image; นำเข้า java.awt.toolkit; นำเข้า Javax.swing.jpanel; cartonperson ระดับสาธารณะขยาย JPanel ดำเนินการ {image img [] = ภาพใหม่ [6]; int index = 0; ความเร็ว) {this.speed = speed; img [0] = toolkit.getDefaultToolKit (). getImage ("1.png"); img [1] = toolkit.getDefaultToolkit () getImage ("2.png"); img [2] = toolkit.getdefaulttoolkit "3.png"); img [3] = toolkit.getdefaulttoolkit (). getImage ("4.png"); img [4] = toolkit.getdefaulttoolkit (). getImage ("5.png"); img [5] = toolkit.getDefaultToolkit () run () {ในขณะที่ (จริง) {ลอง {repaint (); thread.sleep (100);} catch (interruptedException e) {e.printstackTrace ();}}}@overridepublic paintComponent (กราฟิก g) {// toDo 0, getWidth (), getheight (), สิ่งนี้); // system.out.println (ดัชนี); ถ้า (ดัชนี == 5) {index = 0;} อื่น {ดัชนี ++;}}}}เค้าโครงแบบฟอร์มเดียว
นำเข้า java.awt.event.actionevent; นำเข้า java.awt.event.actionListener นำเข้า Javax.swing.jbutton; นำเข้า Javax.swing.jframe; คลาสสาธารณะ Singlethreadcarton ขยาย JFrame JButton ("Wait"); JButton Brew = new JButton ("ดำเนินการต่อ"); singlethreadcarton () {init (); this.settitle ("Breaking Threadman"); this.setsize (600, 500); this.setResizable (จริง); this.setLocationRelativeto (null); this.setDefaultCloseoperation (exit_on_close); this.setVisible (จริง);} void init () {this.setLayout (null); p1 = cartonperson ใหม่ 160); bstart.setbounds (260, 280, 80, 30); bpause.setbounds (260, 320, 80, 30); bresume.setbounds (260, 360, 80, 30); bresume.setbounds (260, 360, 80, 30, 30, 30); 360, 80, 30); bresume.setbounds (260, 360, 80, 30); bresume.addactionListener (260, 360, 80, 30); bresume.addactionListener (BC); stubif (e.getSource () == bstart) {p1.run ();} อื่นถ้า (e.getSource () == bpause) {} อื่นถ้า (e.getSource () == bresume) {}}}}}}}}}}}}}}}}}}}}}}}ผลการทำงาน:
หลังจากคลิกปุ่ม "เริ่ม" โปรแกรมจะล่ม
รูปแบบฟอร์มแบบมัลติเธรด
นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionListener นำเข้า Javax.swing.jbutton; นำเข้า Javax.swing.jframe; คลาสสาธารณะ Multithreadcarton ขยาย jframe {cartonperson p1; JButton ("รอ"); JButton Brew = new JButton ("ดำเนินการต่อ"); multithreadcarton () {init (); this.settitle ("รันเธรดแมน"); this.setsize (600, 500); this.setResizable (จริง); this.setLocationRelativeto (null); this.setDefaultCloseoperation (exit_on_close); this.setVisible (จริง);} void init () {this.setLayout (null); p1 = cartonperson ใหม่ 160); bstart.setbounds (260, 280, 80, 30); bpause.setbounds (260, 320, 80, 30); bresume.setbounds (260, 360, 80, 30); bresume.setbounds (260, 360, 80, 30, 30, 30); 360, 80, 30); bresume.setbounds (260, 360, 80, 30); bresume.addactionListener (260, 360, 80, 30, 30); bresume.addactionListener (260, 360, 80, 30); 30); bresume.addactionListener (260, 360, 80, 30); bresume.addactionListener (260, 360, 80, 80, 30); bresume.addactionlistener (260, 360, 80, 30); 30); bresume.addactionListener (260, 360, 80, 30); bresume.addactionListener (260, 360, ButtonClick ใช้ ActionListener {@OverridePublic Actionperformed (ActionEvent E) {// TODO stubif (e.getSource () == bstart) {// p1.run (); t1.start ();} อื่นถ้า (e.getSource () == bpaUce) {t1.suspend ()}} else (e.getSource () {stracks) multithreadcarton ();}}ผลการทำงาน: ดังที่แสดงในรูปด้านบน
ข้างต้นคือคำอธิบายของตัวอย่างของเธรดฮีโร่ที่สามารถวิ่งในการแกว่งใน Java ในครั้งนี้ ขอบคุณสำหรับการสนับสนุน Wulin.com
บทความนี้ทำซ้ำได้ที่: https://www.idaobin.com/archives/841.html