A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 等你的季节-夏天 中级黑马   /  2015-7-6 10:55  /  543 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  • 创建线程的方法有3种:
  • 1. 自定义类继承Thread类, 重写run()方法, 创建子类对象, 调用start()方法启动线程. 这种方法的缺点是占用了继承
  • 2. 自定义类实现Runnable接口, 重写run()方法, 创建实现类对象, 然后创建多个线程的Thread对象, 创建的时候将实现类对象作为构造器参数传入, 然后使用Thread对象调用start()方法启动线程, 这种方法的好处是不占用继承
  • 3. 使用线程池的方法. 自定义类实现Callable接口, 重写call()方法, 注意Callable接口有泛型, call()方法要有泛型类的返回值. 然后创建线程池对象, 使用Executors类的3种创建线程池的方法都可以, 一般使用newFixedThreadPool, 返回一个ExecutorService类的线程池对象, 用该对象调用submit方法, 将Callable实现类对象传入, 创建几个线程就创建几个实现类对象并执行几个submit, submit会返回Future类的线程运行结果. 这种方法创建的线程只在最初创建一次, 执行完毕后回到线程池中等待, 除非调用线程池的shutdown方法关闭线程池才会销毁, 节省资源且效率高

5 个回复

倒序浏览
开源的视频里,似乎只有前俩种吧,第三种在开发很常用么,求解答回复
回复 使用道具 举报
wing-SF 发表于 2015-7-6 11:19
开源的视频里,似乎只有前俩种吧,第三种在开发很常用么,求解答回复

很少用,开发经常用的就是Runnable接口。这样拓展性更强
回复 使用道具 举报
分享快乐 赞一个
回复 使用道具 举报
第三种以前还真不知道,学习了。最常用的是实现Runnable接口的方式
回复 使用道具 举报
只知道前两种,第三种没见过。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马