Perceba o efeito:
O homem do tópico de travamento: (thread único)
Quando o encadeamento principal está processando uma solicitação para atualizar a imagem, ele não pode aceitar outras solicitações, caindo assim em um estado de loop morto bloqueador.
Desenhe figuras
importar java.awt.Graphics; importar java.awt.image; importar java.awt.toolkit; importar javax.swing.jpanel; a classe pública Cartonperson estende JPanel implementa a execução runnável {Image iMg [] = nova imagem [6]; int index = 0; velocidade pública; velocidade) {this.speed = speed; img [0] = Toolkit.getDefaultToolkit (). getImage ("1.png"); img [1] = Toolkit.getDefaultToolkit (). getImage ("2.png"); img [2] = Toolkit.getDoftalkkkk (2.png "); "3.png"); img [3] = Toolkit.getDefaultToolkit (). GetImage ("4.png"); img [4] = Toolkit.getDefaultToolkit () run () {while (true) {try {repen (); thread.sleep (100);} catch (interruptEdException e) {e.printStackTrace ();}}}@substituirpublic void PaintContn (graphics g) {// TODO-Generated MethodAnge STUBSUPERPONMONGCONMPON (G) {// TODO Auto-Generated StubsUper.PantCon getWidth (), getHeight (), this); // system.out.println (index); if (index == 5) {index = 0;} else {index ++;}}}}Layout de formulário de thread único
importar java.awt.event.actionEvent; importar java.awt.event.actionListener; importar javax.swing.jbutton; importar javax.swing.jframe; public classe singleThreadCarton estende JFrame {CartonPerson p1; jbutton = button = jbutton "") Jbutton ("espera"); jbutton Brew = new jbutton ("continuação"); 500); this.setResizable (true); this.setLocationRelativeTo (null); this.setDefaultCloseoperation (exit_on_close); this.setVisible (true);} void init () {this.setLayout (null); p1 = new 100); 160); BSTART.LETBOUNDS (260, 280, 80, 30); BPAUSE.SETBOUNDS (260, 320, 80, 30); BRESUME. 360, 80, 30); Bresume.Letbounds (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (BC);} classe ButtonClick implementa a ação {@OverridePublic Void actionPerford (actionEvent e) stubif (e.getSource () == bstart) {p1.run ();} else if (e.getSource () == bpause) {} else if (e.getSource () == Bresume) {}}} public void Maid (string [] args) {singleThTr)Resultados em execução:
Depois de clicar no botão "Iniciar", o programa trava.
Layout de formulário com vários threads
importar java.awt.event.actionEvent; importar java.awt.event.actionListener; importar javax.swing.jbutton; importar javax.swing.jframe; classe pública multithreadcarton estende jbutton {Cartonperson p1; thread t1; jbutton bstart = jbutton (carttonperson p1; thread t1; thread; jbutton bstarton = jbutton (carttonperson p1; thread t1; thread; Jbutton ("espera"); jbutton Brew = new jbutton ("continuação"); multithreadcarton () {init (); this.settitle ("em execução 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 100); 160); BSTART.LETBOUNDS (260, 280, 80, 30); BPAUSE.SETBOUNDS (260, 320, 80, 30); BRESUME. BRESUME. Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, 80, 30); 30); Bresume.AddactionListener (260, 360, 80, 30); Bresume.AddactionListener (260, 360, ButtonClick implementa ActionListener {@OverridePublic void actionPerford (ActionEvent e) {// TODO Método auto-generado stubif (e.getSource () == bstart) {// p1.run (); t1.start ();} else if (e.getSource () == bpause) {t1.suspend ();} else (e.getSource () == {) {t1.Resume (); MultithreadCarton ();}}Resultado em execução: como mostrado na figura superior.
O exposto acima é a descrição do exemplo do herói do thread que pode correr em Java desta vez. Obrigado pelo seu apoio ao wulin.com.
Este artigo é reproduzido em: https://www.idaobin.com/archives/841.html