java中有幾種方法可以實現一個執行緒?用什麼關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?
java5以前,有如下兩種:
第一種:
new Thread(){}.start();這表示呼叫Thread子類物件的run方法,new Thread(){}表示一個Thread的匿名子類的例項物件,子類加上run方法後的程式碼如下:
new Thread(){
public void run(){
}
}.start();
第二種:
new Thread(new Runnable(){}).start();這表示呼叫Thread物件接受的Runnable物件的run方法,new Runnable(){}表示一個Runnable的匿名子類的例項物件,runnable的子類加上run方法後的程式碼如下:
new Thread(new Runnable(){
public void run(){
}
}
).start();
從java5開始,還有如下一些執行緒池建立多執行緒的方式:
ExecutorService pool = Executors.newFixedThreadPool(3)
for(int i=0;i<10;i++)
{
pool.execute(new Runable(){public void run(){}});
}
Executors.newCachedThreadPool().execute(new Runable(){public void run(){}});
Executors.newSingleThreadExecutor().execute(new Runable(){public void run(){}});
有兩種實現方法,分別使用new Thread()和new Thread(runnable)形式,第一種直接呼叫thread的run方法,所以,我們往往使用Thread子類,即new SubThread()。第二種呼叫runnable的run方法。
有兩種實現方法,分別是繼承Thread類與實現Runnable介面
用synchronized關鍵字修飾同步方法
反對使用stop(),是因為它不安全。它會解除由執行緒獲取的所有鎖定,而且如果物件處於一種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。