创建线程的三种方式

2020-03-11  本文已影响0人  C调路过
public class CreateThread {
    public static void main(String[] args) {
        Thread thread1 = new Thread("通过重写run()方法") {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName());
            }
        };

        thread1.start();
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName());
            }
        };
        Thread thread2 = new Thread(runnable, "通过传递Runnable");
        thread2.start();


        FutureTask<Integer> futureTask = new FutureTask<Integer>(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                System.out.println(Thread.currentThread().getName());

                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return 200;
            }
        });
        Thread thread3 = new Thread(futureTask, "通过FutureTask创建带有返回值的任务");
        thread3.start();
        try {
            int res = futureTask.get();
            System.out.println(res);
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读