线程创建与执行

public class TestThread {
    
    
    public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException {
    
    

        //extends from Thread
        new MyThread().start();

        //implements from Runnable
        new Thread(new Runnable() {
    
    
            @Override
            public void run() {
    
    
                System.out.println("Implement form Runnable 1");
            }
        }).start();
        
        //FutureTask实现了Runnable,它既可以通过Thread包装来直接执行,也可以提交给ExecutorService来执行
        //Callable 1
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        Callable<String> callable1 = new Callable<String>() {
    
    
            @Override
            public String call() throws Exception {
    
    
                return "Callable 1";
            }
        };
        Future<String> stringFuture = executorService.submit(callable1);
        System.out.println(stringFuture.get(10, TimeUnit.SECONDS));

        //Callable 2
        FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
    
    
            @Override
            public String call() throws Exception {
    
    
                return "Callable 2";
            }
        });
        executorService.execute(futureTask);
        String res = futureTask.get(3, TimeUnit.SECONDS);
        System.out.println(res);

        //Callable 3
        Callable myCallable = new Callable() {
    
    
            @Override
            public Object call() throws Exception {
    
    
                return "Callable 3";
            }
        };
        FutureTask<String> futureTask1 = new FutureTask<>(myCallable);
        new Thread(futureTask1).start();
        System.out.println(futureTask1.get());
    }
}

class MyThread extends Thread {
    
    
    @Override
    public void run() {
    
    
        System.out.println("Extends from Thread");
    }
}

猜你喜欢

转载自blog.csdn.net/tolmanlau/article/details/115192052