【Java基礎】線程基本教程

線程是一個程序中的不一樣的執行的路徑, 每個分支都叫線程。java

進程只是一個靜態的概念,在咱們機會裏面其實運行都是線程。進程(主線程)包含不少線程。多線程

Java建立線程有2種方式:
ide

一、實現Runnable接口(推薦):spa

class Runnable1 implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println("in Runnable1 i="+i);
		}
	}
	
}

二、繼承Thread類:線程

class Runnable2 extends Thread{
	
	@Override
	public void run() {
		for (int i = 0; i < 200; i++) {
			System.out.println("in Runnable2 i="+i);
		}
	}
	
}

線程的調用:code

//實現Runnable接口的調用方式
Runnable1 r=new Runnable1();
Thread t=new Thread(r);
t.start();//啓動一個線程   //問題1:啓動一個線程,讓線程去執行run()方法中的代碼,與直接去調用run()是有巨大的區別的
//調用繼承extends Thread類的線程
Runnable2 r=new Runnable2();
r.start(); //啓動一個線程

線程睡眠sleep:繼承

Thread.sleep(1000); //表示當前線程睡眠1000毫秒
//若是寫在主線程中,就是讓主線程睡眠;反之若是寫在子線程run方法中,就是讓子線程睡眠
package org.zhanghua.javase.demo.thread;


/**
 * 線程演示sleep
 * @author Edward
 *
 */
public class SleepTest{
	 
	public static void main(String[] args) {
		System.out.println("sleep前:"+System.currentTimeMillis());
		try {
			Thread.sleep(1000); //表示當前線程(主線程)睡眠1000毫秒
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("sleep後:"+System.currentTimeMillis());
		//實現Runnable接口的調用方式
		Runnable1 r=new Runnable1();
		Thread t=new Thread(r);
		t.start();//啓動一個線程  
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(1000); //表示當前線程(主線程)睡眠1000毫秒
			} catch (InterruptedException e) {
				e.printStackTrace();
			} 
			System.out.println("in main i="+i);
		}
	}
}
/**
 * 線程類
 * @author Administrator
 *
 */
class Runnable1 implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(500); //讓當前線程(Runnable1)睡眠1000毫秒
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("in Runnable1 i="+i);
		}
	}
	
}

合併線程Join:接口

join()方法表示合併,至關於方法調用。進程


打斷線程有2種方法:get

interrupt() 不推薦 表示打斷線程(不友好)

stop() 積不推薦 強制結束線程(直接關閉,好比殺死進程)


退讓線程Yield():

yield() 標識退出當前線程進入就緒狀態,讓給別的線程執行一下。

線程狀態圖:

線程優先級:

線程優先級由數字表示,範圍1-10,一個線程的缺省優先級是5

//Thread.MIN_PRIORITY=1

//Thread.MAX_PRIORITY=10

//Thread.NORM_PRIORITY=5

設置線程優先級方法和獲取線程優先級方法

int getPriority() 獲取線程優先級

void setPriority(int newPriority) 設置線程優先級


線程經常使用基本方法:

相關文章
相關標籤/搜索