一、建立線程的兩種方式:this
(1)建立Thread類的子類,重寫run方法線程
class Thread1 extends Thread{ public void run(){ 重寫方法體 } }對象
在main方法中:接口
Thread1 t1 = new Thread1 (); 同步
t1.start();string
(2)實現Runnable接口,重寫run方法,再傳入Thread類的實例參數中class
class Thread2 implements Runnable{ public void run(){ 重寫方法體} }方法
在main方法中:im
Thread2 t2 = new Thread2 ();call
Thread t = new Thread(t2);
t.start();
二、線程同步
(1)同步方法:使調用該方法的線程均能得到對象的鎖
class Share{ synchronized void print(String str){ 方法體 }}
被synchronized 的方法,一旦一個線程進入實例的同步方法中,直到當前線程執行完這個方法,其餘線程才能進入。但該實例的非同步方法仍是能夠被其餘線程調用的
(2)同步塊
關聯(1)中的類,class caller implements Runnable{
string str;
Share s;
Thread t;
public caller(Share s,String str){
this.s = s;
this.str = str;
t = new Thread(this);
t.start();
}
public void run (){
synchronized(s){ //同步share對象
s.print(str);
}
}
}