JavaのThread

Thereadをそのまま使うか、implements Runnableかextends Threadするかの3通りがある。

public class ThreadTest{
    private class CountThread implements Runnable{
        private int count;
        public CountThread(int count){
            this.count = count;
        }
        public void run(){
            while(true){
                System.out.println("Thread(Runnable) : "+count);
                count++;
                try{
                    Thread.sleep(1000);
                }
                catch(Exception ex){
                    ex.printStackTrace();
                }
            }
        }
    }
    
    public static void main(String args[]){
        System.out.println("start");
        ThreadTest app = new ThreadTest();
        app.run();
    }

    public void run(){

        Thread cth = new Thread(new CountThread(3));
        cth.start();
        
        Thread th = new Thread(){
                private int count;
                public void start(){
                    this.count = count;
                    super.start();
                }
                public void run(){
                    while(true){
                        System.out.println("Thread : "+count);
                        count++;
                        try{
                            Thread.sleep(1000);
                        }
                        catch(Exception ex){
                            ex.printStackTrace();
                        }

                    }
                }
            };
        th.start();
        
        class CountThread extends Thread{
            private int count;
            public CountThread(int count){
                this.count = count;
            }
            public void run(){
                while(true){
                    System.out.println("Thread(extend) : " + count);
                    count++;
                    try{
                        Thread.sleep(1000);
                    }
                    catch(Exception ex){
                        ex.printStackTrace();
                    }
                }
            }
        }
        new Thread(new CountThread(5)).start();
    }
    
}