多線程

多線程機制
多線程機制,簡單的說就是當程序同時完成多件事情時,就是所謂的多線程程序。
學習目標
在這裏插入圖片描述

實現線程的兩種方式

繼承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)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章