创建线程的三种方式的对比?

回答·13
最热
最新
  • 方法一:实现 Runnable 接口 方法二:继承 Thread 类 方法一:实现 Runnable 接口 (更好) 1、从代码架构角度,具体执行的任务(run 方法中的内容)不应该和线程的创建耦合在一块,从解耦的角度方法一更好。 2、通过继承 Thread 类方式实现多线程,每次执行一个任务都会新建一个独立的线程,而新建一个独立的线程开销是比较大的(新建、运行、销毁等),而使用 Runnable 可以利用线程池等工具大大减少线程创建的开销,所以第二个好是好在资源的节约上。 3、由于 java 不支持双继承,继承了 Thread 类后不能再继承其他类了,大大减少了可扩展性。 两种方法本质对比 方法一:最终调用 target.run(); 方法二:run()整个都被重写 总结:只能通过新建 Thread 类这一种方式来创建线程,但是类里面的 run 方法有两种方式来实现,第一种是重写 run 方法,第二种实现 Runnable 接口的 run 方法,然后再把该 runnable 实例传给 Thread 类。 除此之外,从表面上看线程池、定时器等工具类也可以创建线程,但是它们的本质都逃不出刚才所说的范围
  • 线程创建只能通过 new Thread 类,不知道哪里来的杂七杂八误人子弟的讲法!  你可以说线程使用可以有很多种,但是 java 中创建线程只有一种,你说呢?
  • 1.继承 thread 2.实现 runnable 接口 3.实现 callable 接口,有返回值
  • 如果生活不宠你,你要自己善待自己, 这一生风雨兼程,就是为了遇见更·好的自己, 余生很贵,努力活成自己想要的样子。 ·
  • 如果生活不宠你,你要自己善待自己, 这一生风雨兼程,就是为了遇见更·好的自己, 余生很贵,努力活成自己想要的样子。 ·
  • 告诉大家一个方法,在Boss社区上面评论回复超过15个字以上会有活跃度和曝光度,就像我这样,是在活跃账号
  • 继承 Thread 类,实现 Runable 接口,实现 Callnable 接口,线程池根据需要自动创建,第一种不要用,太死板,必须要为每个任务定义一个类,Java8 开始都是引入 lambda,在方法里面传入函数式接口,而 Runnable 和 Callnable 都是函数式接口,我们可以灵活的为每个任务农使用 lambda 表达式的形式自定义任务逻辑,非常灵活,而 Java 要求我们面相接口编程,为的就是扩展性,两个接口最大的不用在于是否需要任务最终有返回值,仅此而已,因为在多线程异步编排中,可能我们下一个任务需要上一个任务的返回值作为输入,多线程很复杂的,最好是学学 juc 包,
  • 1 通过继承 thread,需要执行的方法在 run,调用 start 方法,资源调度器将会分配时间片执行。等待 cpu 执行,此时线程状态由 new 状态转化到 running 操作系统的状态则具体看 cpu 是否执行该线程。 2 实现 runnable 接口,执行过程如上,runnable 负责逻辑执行单元的部分。采用了策略设计模式。 3 通过 futuretask 配合 thread,futuretask 接收 callable 类型的参数,通过 call 实现线程的返回操作。 4 通过线程池的方式实现 通过深入 Thread 类发现多线程最终通过调用 init 方法,并且通过 System.getSecurityManager 使用 jni 底层实现多线程的创建。
  • 一个继承类 一个实现接口 还有一个实现接口并且有返回值
  • 我觉得有不止三种。emmmmm,直接异步/线程池不香嘛?