Java构建线程的方式

2023-12-25 10:44:27
  • 继承Thread

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

  • 实现Runnable接口

  • 实现Callable接口Callable提供的call方法结果可以有返回结果并且可以抛出异常。
    public class CallableTest implements Callable<Integer> {
        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<Integer> callable = new CallableTest();
            FutureTask<Integer> futureTask = new FutureTask<>(callable);
            Thread t = new Thread(futureTask);
            t.start();
            System.out.println(futureTask.get());
        }
    }

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

文章来源:https://blog.csdn.net/qq_44577699/article/details/135191490
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。