스레드 생성 방법(Thead, Runnable, Callable)

11567 단어 라인 관련

1: Thread 클래스 상속

public class ThreadDemo {


// 1.  Thread  run 
    class MyThread extends Thread{
        @Override
        public void run() {
            super.run();

            System.out.println(" ");
        }
    }

    public static void main(String[] args) {

        // 2   MyThread  
        ThreadDemo.MyThread myThread=new ThreadDemo().new MyThread();

        //3.  
        myThread.start();


    }
}

2: Runnable 인터페이스 구현

public class ThreadDemoRunable {
    // 1. Runnable 
    class  MyRunable implements Runnable{

        @Override
        public void run() {

            System.out.println( Thread.currentThread().getName()+" ");
        }
    }
    public static void main(String[] args) {

        //2. Runnable  
        ThreadDemoRunable.MyRunable myRunable=new ThreadDemoRunable().new MyRunable();
        //3.  Thread  
        Thread thread=new Thread(myRunable);
        thread.setName("runnable ");
        //4.  
        thread.start();
    }
}


3: Callable 인터페이스 구현

public class ThreadDemoCalladle {


    //1  Callable  
    class  myCallable  implements Callable<Integer>{

        @Override
        public Integer call() throws Exception {
            return 100;
        }
    }


    public  void startThreadByCallable(){
        //2.  FutureTask  
        FutureTask futureTask=new FutureTask(new myCallable());
        //3.    
        new Thread(futureTask).start();

        try {
            //4.    
            System.out.println(futureTask.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {

        // 5.  
        new ThreadDemoCalladle().startThreadByCallable();
    }
}


메서드
차이점
계승
실현은 간단하지만 다계승은 실현할 수 없다
실행
실현도 복잡하지 않고 단일 계승의 단점을 피하고 데이터 공유
Callable 구현
실현도 약간 복잡하고 단일 계승의 단점을 피하며 데이터 공유는 Runnable에 비해 되돌아오는 값이 있다

좋은 웹페이지 즐겨찾기