多線程機制
多線程機制,簡單的說就是當程序同時完成多件事情時,就是所謂的多線程程序。
學習目標
實現線程的兩種方式
繼承Thread類
Thread是java.lang包中的一個類,從這個類中實例化的對象代表線程。
public class Text extends Thread{
}
完成線程真正功能的代碼在run()方法中,調用Thread類中的start()方法執行線程,也就是調用run()方法。
實例
繼承Thread類,覆蓋run()方法,在main中使線程執行需要調用Thread的start方法。
public class ThreadTest extends Thread {
private int count = 10;
public void run() {
while(true)
{
System.out.println(count+" ");
if(--count==0)return;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new ThreadTest().start();
}
}
運行結果
實現Runnable接口
可以通過Runnable接口來實現繼承其他類而且還要使用當前類實現多線程。
語法:
public class Thread extends Object implememt Runnable
例題
(感覺代碼沒問題了,可能缺少的是一個gif和gif放哪裏的問題T_T)
package javaman;
import java.net.*;
import javax.swing.*;
import java.awt.*;
public class SwingAndThread extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JLabel jl = new JLabel();
private static Thread t;
private int count = 0;
private Container container = getContentPane();
public SwingAndThread() {
setBounds(300, 200, 250, 100);
container.setLayout(null);
URL url = SwingAndThread.class.getResource("/1.gif");
Icon icon = new ImageIcon(url);
jl.setIcon(icon);
jl.setHorizontalAlignment(SwingConstants.LEFT);
jl.setBounds(10, 10, 200, 50);
jl.setOpaque(true);
t = new Thread(new Runnable() {
public void run() {
while (count <= 200) {
jl.setBounds(count, 10, 200, 50);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
count += 4;
if (count == 200) {
count = 10;
}
}
}
});
t.start();
container.add(jl);
setVisible(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
new SwingAndThread();
}
}
運行結果:
(放的是書上的圖,我沒搞出來,不知道這個gif要放在哪裏T_T)