執行緒介紹及建立方式

LUCK.Y-ZT發表於2020-11-26

執行緒

1 執行緒介紹

思考:什麼是程式?什麼是執行緒?兩者之間什麼關係?

  • 程式:就是一個正在執行的程式,比如:typeroa、eclipse、瀏覽器等等

  • 執行緒:執行緒是程式中的一個執行單元,例如:QQ音樂播放音樂和下載音樂

  • 關係:在一個程式中可以包含多個執行緒

  • 當需要在同一個時刻去做多件事情時,就需要開啟多個執行緒

  • 關鍵詞:Thread、Runnable

2 執行緒建立方式

  • 在java中main函式稱為主執行緒

  • 多個執行緒之間的執行是互不影響的

  • 兩種執行緒方式如何選擇?

  • 選第二個,選擇繼承的話也就意味著該子類不能再繼承其他類,擴充套件性不好

package cn.yunhe.thread;


public class ThreadDemo {

	public static void main(String[] args) {
		/*SubThread thread = new SubThread();
		thread.start();
		int a = 1/0;*/
		
		//實現Runnable介面的類目的是為了定義任務
		Runnable run = new SubRun();
		//此處的Thread物件是用建立並開啟執行緒的,它當中是沒有指定的任務的
		Thread thread = new Thread(run);
		thread.start();
		
		int a = 1/0;
	}
}

class SubRun implements Runnable{

	@Override
	public void run() {
		while(true) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("執行緒中的任務");
		}
	}
}

class SubThread extends Thread{

	/**
	 * run方法用於定義該執行緒要執行的任務
	 */
	@Override
	public void run() {
		while(true) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("執行緒中的任務");
		}
	}
}

3 程式擴充套件

  • 需求:同一個任務需要多個執行緒執行
package cn.yunhe.thread;

public class ThreadDemo2 {

	public static void main(String[] args) {
		/*//要執行的任務
		PrimeRun primeRun = new PrimeRun();
		//需求:同一個任務需要多個執行緒執行
		Thread t1 = new Thread(primeRun);
		t1.start();
	
		Thread t2 = new Thread(primeRun);
		t2.start();*/
		
		PrimeThread primeThread = new PrimeThread();
		primeThread.start();
		PrimeThread primeThread2 = new PrimeThread();
		primeThread2.start();
	}
}

class PrimeRun implements Runnable{

	@Override
	public void run() {
		System.out.println("haha");
	}
}

class PrimeThread extends Thread{
	@Override
	public void run() {
		System.out.println("hehe");
	}
}

相關文章