并发编程之Java中如何实现多线程(下)

3 篇文章 0 订阅
1 篇文章 0 订阅

上篇文章讲了前两种实现方法,接下来会为大家展现后两种方法是如何实现的

三、实现Callable接口

  1. 与使用Runnable相比, Callable功能更强大些

  2. 实现的call()方法相比run()方法,可以返回值

  3. 方法可以抛出异常

  4. 支持泛型的返回值

  5. 需要借助FutureTask类,比如获取返回结果

class CallableTest implements Callable<Integer> {       @Override      public Integer call() throws Exception {          int sum = 0;          for (int i = 0; i < 10; i++) {              System.out.println(Thread.currentThread().getName() + ":" + i);              sum += i;          }          return sum;      }  }  public class Test {      public static void main(String[] args) {      // 实现Callable<> 有返回值          CallableTest callableTest = new CallableTest();          FutureTask<Integer> futureTask = new FutureTask<>(callableTest);          new Thread(futureTask, "方式三").start();          // 返回值          try {              Integer integer = futureTask.get();              System.out.println("返回值(sum):" + integer);          } catch (Exception e) {              e.printStackTrace();          }       }    }   

四、使用线程池

说明:

  • 提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。

好处:

  1.  提高响应速度(减少了创建新线程的时间)

  2.  降低资源消耗(重复利用线程池中线程,不需要每次都创建)

  3.  便于线程管理

class ThreadPool implements Runnable {      @Override      public void run() {          for (int i = 0; i < 10; i++) {              System.out.println(Thread.currentThread().getName() + ":" + i);          }      }  }  // 线程池   public class Test {      public static void main(String[] args) {          ExecutorService pool = Executors.newFixedThreadPool(10);          ThreadPoolExecutor executor = (ThreadPoolExecutor) pool;          /*           * 可以做一些操作:           * corePoolSize:核心池的大小           * maximumPoolSize:最大线程数           * keepAliveTime:线程没任务时最多保持多长时间后会终止           */          executor.setCorePoolSize(5);          // 开启线程          executor.execute(new ThreadPool());          executor.execute(new ThreadPool());          executor.execute(new ThreadPool());          executor.execute(new ThreadPool());      }    }  }

注:本文为Wayne原创,未经许可不得在任何平台转载。如需转载,与作者联系~

关注微信公众号:智识训练营(微信ID:TechBootcamp),获取更多资讯~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值