線程是一個程序中的不一樣的執行的路徑, 每個分支都叫線程。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) 設置線程優先級
線程經常使用基本方法: