1. 程式人生 > >Java 兩種實現多線程的區別

Java 兩種實現多線程的區別

的區別 runnable ticket 解決 sys system ava div []

1,繼承 Thread(各自賣10張票)

class MyThread extends Thread{
    private int ticket = 10;
    public void run() {
        for(int i = 0; i < 10; i++) {
            if(this.ticket > 0) {
                System.out.println("正在賣第" + (this.ticket--) + "張票");
            }
        }
    }
}

public class Test1 {
    
public static void main(String[] args) { MyThread mt1 = new MyThread(); MyThread mt2 = new MyThread(); MyThread mt3 = new MyThread(); mt1.start(); mt2.start(); mt3.start(); } }

技術分享圖片

2,實現 Runnable(一起賣10張票)

class MyThread implements Runnable{
    private
int ticket = 10; public void run() { for(int i = 0; i < 10; i++) { if(this.ticket > 0) { System.out.println("正在賣第" + (this.ticket--) + "張票"); } } } } public class Test1 { public static void main(String[] args) { MyThread mt
= new MyThread(); // 3 個線程同時占用著 mt new Thread(mt).start(); new Thread(mt).start(); new Thread(mt).start(); } }

技術分享圖片

區別:

1,Runnable 解決了單繼承問題

2,Runnable 更好描述共享資源

Java 兩種實現多線程的區別