Java构建线程的方式

  • 继承ThreadJava构建线程的方式_第1张图片Java构建线程的方式_第2张图片

通过上面代码可以看出Thread类自身实现了Runnable接口,并在创建Thread类时,通过有参构造写入,将Thread类中的target属性进行赋值,并在调用线程的时候执行你传入的Thread类的run方法。

  • 实现Runnable接口Java构建线程的方式_第3张图片

  • 实现Callable接口Java构建线程的方式_第4张图片Callable提供的call方法结果可以有返回结果并且可以抛出异常。
    public class CallableTest implements Callable {
        private int num = 0;
    
        @Override
        public Integer call() throws Exception {
            for (int i = 0; i < 10; i++) {
                num++;
            }
            return num;
        }
    
        public static void main(String[] args) throws Exception {
            Callable callable = new CallableTest();
            FutureTask futureTask = new FutureTask<>(callable);
            Thread t = new Thread(futureTask);
            t.start();
            System.out.println(futureTask.get());
        }
    }

  • 线程池方法Java构建线程的方式_第5张图片
    线程池方式其实和上面没有区别,只不过上面需要频繁的创建和销毁线程,会造成一些不必要的额外资源消耗,所以在实际开发中肯定会采用线程池的方式。
    Java 中的 Executors自带了一些创建线程池的方式。
    在构建好线程池 ThreadPoolExecutor 后就可以直接调用 execute submit 方法执行线程任务。
    • execute适用于Runnable没有返回结果
    • submit更适合Callable具有返回结果

你可能感兴趣的:(Java,java,开发语言)