Threadクラスの継承によるスレッド起動

public class PrintThread extends Thread {
    private String message;
    
    public PrintThread(String message) {
        this.message = message;
    }
    
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.print(message);
        }
    }
}
public class Main {
    public static void main(String[] args) {
        new PrintThread("A").start();
        new PrintThread("B").start();
    }
}

Runableインターフェースの実装によるスレッド起動

public class Printer implements Runnable {
    private String message;
    
    public Printer(String message) {
        this.message = message;
    }
    
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.print(message);
        }
    }
}
public class Main {
    public static void main(String[] args) {
        new Thread(new Printer("A")).start();
        new Thread(new Printer("B")).start();
    }
}

スレッドの一時停止

public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.print("A");
            
            // 1回表示するたびに1000ミリ秒スレッドを停止
            // =1秒間隔で表示
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                
            }
        }
    }
}

スレッドの排他制御