1. 程式人生 > 實用技巧 >多執行緒之建立執行緒的方式

多執行緒之建立執行緒的方式

繼承Thread類
1.新建一個執行緒類繼承Thread類
2.重寫run()
3.在main方法中例項化執行緒物件
4.呼叫start()


public class Thread01{
public static void main(String []args){
MyThread t = new MyThread();
t.start();
for(int i = 0;i < 100;i++){
System.out.println("main");
}
}
}
class MyThread extends Thread{
@Override
public void run(){
for(int i = 0;i < 100;i++){
System.out.println("MyThread");
}
}
}

實現Runnable介面
1.建立執行緒類並實現Runnable介面
2.實現run()
3.在main執行緒中例項化執行緒類建立物件
4.例項化Thread,將執行緒類物件作為引數放入Thread構造器中
4.呼叫start()

public class Thread02{
public static void main(String []args){
MyThread02 runnable01 = new MyThread02();
Thread t2 = new Thread(runnable01);
t2.start();
for(int i = 0;i < 100; i++){
System.out.println("main");
}
}
}
class MyThread02 implements Runnable{
public void run(){
for(int i = 0;i < 100; i++){
System.out.println("Runnable");
}
}
}
實現Callable介面:
1.建立自定義執行緒類實現Callable介面
2.實現call方法
3.在main方法中建立自定義執行緒類的物件,
將此物件作為引數傳遞到FutureTask構造器中,建立FutureTask物件
4.將FutureTask物件作為引數傳遞到Thread構造器中,
建立Thread物件
5.呼叫Thread物件的start方法啟動執行緒
6.接收call方法的返回值(如果存在返回值)
public class Thread_Callable{
public static void main(String []args){
MyCallable c = new MyCallable();
FutureTask f = new FuthreTask(c);
Thread t = new Thread(f);
t.start();
Object sum = f.get();
System.out.println(sum);
}
}
class MyCallable implements Callable{
public Object run(){
for(int i = 1;i <= 100; i++){
System.out.println(i);
count+=i;
}
return count;
}
}

執行緒池:

 1.建立執行緒池
* 2.建立自定義執行緒的物件
* 3.將此物件作為引數傳遞到execute方法中(Runnable)或submit方法中(Callable)
* 4.關閉執行緒池shutdown();
public class Thread_Pool {
public static void main(String[] args) {
//建立容量為10的執行緒池
ExecutorService executorService = Executors.newFixedThreadPool(10);
MyPool myPool = new MyPool();
executorService.execute(myPool);
executorService.shutdown();
for (int i = 0; i <1000 ; i++) {
System.out.println("main...");
}
}
}
class MyPool implements Runnable{
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println("pool...");
}
}
}