Réalisez l'effet:
L'homme de thread crash: (thread unique)
Lorsque le thread principal traite une demande pour actualiser l'image, il ne peut pas accepter d'autres demandes, tombant ainsi dans un état de boucle morte de blocage.
Dessiner des images
import java.awt.graphics; import java.awt.image; import java.awt.toolkit; import javax.swing.jpanel; public class Cartonperson étend Jpanel implémente Runnable {image img [] = nouvelle image [6]; int index = 0; int spee Speed) {this.Speed = Speed; img [0] = toolkit.getDefaultToolkit (). getImage ("1.Png"); img [1] = toolkit.getdefaulttoolkit (). getImage ("2.png"); img [2] = toolkit.getdefaulttoolkit (). GetImage (IMG [2] = Toolkit.getDefaultToolkit (). "3.png"); img [3] = toolkit.getdefaulttoolkit (). GetImage ("4.png"); img [4] = toolkit.getDefaultToolkit (). GetImage ("5.png"); img [5] = toolkit.getDefaultToolkit (). GetImage ("6.png"); run(){while(true){try{repaint();Thread.sleep(100);}catch(InterruptedException e){e.printStackTrace();}}}@Overridepublic void paintComponent(Graphics g) {// TODO Auto-generated method stubsuper.paintComponent(g);g.drawImage(img[index], 0, 0, getWidth (), getheight (), this); // system.out.println (index); if (index == 5) {index = 0;} else {index ++;}}}}Disposition de forme unique
Importer java.awt.event.actionEvent; import java.awt.event.actionListener; import javax.swing.jbutton; import javax.swing.jframe; classe publique singlethreadcarton étend jframe {cartonperson p1; jbutton bstart = new Jbutton ("start"); jbutton bpause = new JBUTTON ("Wait"); Jbutton Brew = new Jbutton ("Continuer"); SingleThreadCarton () {init (); this.settitle ("Breaking Threadman"); this.setSize (600, 500);this.setResizable(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(null);p1=new CartonPerson(0);p1.setBounds(260, 100, 80, 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); bresume.setbounds (260, 360, 80, 30); Bresume. 360, 80, 30); Bresume.setBounds (260, 360, 80, 30); Bresume.addactionListener (260, 360, 80, 30); Bresume.addactionListener (BC);} classe ButtonClick implémente ActionListener {@OverRidePublic ActionPEperform (Actionevent E) Stubif (e.getsource () == bstart) {p1.run ();} else if (e.getsource () == bpause) {} else if (e.getsource () == BRESUME) {}}} public static void main (String [] args) {new singleThreadCarton ();}}Résultats en cours:
Après avoir cliqué sur le bouton "Démarrer", le programme se bloque.
Disposition de la forme multithread
Importer java.awt.event.actionEvent; import java.awt.event.actionListener; import javax.swing.jbutton; import javax.swing.jframe; public class multithreadcarton étend jframe {cartonperson p1; thread t1; jbutton bstart = new Jbutton ("start"); jbutton bpause = bsta JBUTTON ("Wait"); JButton Brew = new JBUTTON ("Continuer"); MultithReadCarton () {init (); this.setTitle ("Running Threadman"); this.setSize (600, 500);this.setResizable(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(null);p1=new CartonPerson(0);p1.setBounds(260, 100, 80, 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); bresume.setbounds (260, 360, 80, 30); Bresume. 360, 80, 30); Bresume.setbounds (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80); Bresume.AddDactionListener (260, 360, 80, 30); 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.addactiontener (260, 360, 80, 80, 30); BRESUME.AdDactionListener (260, 360, 80, 30); BRESUME.AddactionListener (260, 360, ButtonClick implémente ActionListener {@OverRidePublic void ActionPerformed (ActionEvent E) {// Méthode générée automatiquement en fonction de tado Stubif (e.getsource () == bStart) {// p1.run (); t1.start ();} else if (e.getsource () == bpause) {t1.suspennd ();} else if (e.getsource () == BRESUME) {t1.resume ();}}} public static natic id Multithreadcarton ();}}Résultat en cours: comme indiqué dans le chiffre supérieur.
Ce qui précède est la description de l'exemple du héros de fil qui peut courir en Java cette fois. Merci pour votre soutien à Wulin.com.
Cet article est reproduit à: https://www.idaobin.com/archives/841.html