当前位置:   article > 正文

java中有几种方法可以实现一个线程?

java中有几种方法可以实现一个线程

分析&回答


Java中实现线程的两种方法

  • 第一是实现Runnable接口实现它的run()方法。
  • 第二种是继承Thread类,覆盖它的run()方法。

Java多线程实现的四种方式

  • 1.继承Thread类,重写run方法
  • 2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
  • 3.通过Callable和FutureTask创建线程 (通过第二种创建)
  • 4.通过线程池创建线程(通过第一种创建)

反思&扩展


启动一个线程是用run()还是start()

两种方式都是使用start()方法,start方法内调用了run方法,如果直接调用run方法,那么就相当于没有开启线程而直接调用的run方法。

方式一:
Thread thread1 = new Thread(() -> System.out.println("Hello World from Runnable!"));
thread1.start();

方式二:
Thread thread2 = new Thread() {
    @Override
    public void run() {
        System.out.println("Hello World from subclass!");
    }
};
thread2.start();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

两种实现线程的方法你会优先使用那种?实现Runnable接口具有什么优势

采用Runnable接口实现线程:

优势:

  • A、线程类只是实现了Runnable接口,还可以继承其他的类(避免Java单继承)
  • B、在这种方式下,可以多个线程共享同一个目标对象,所以很合适多个线程来处理同一份资源的情况(资源共享),从而可以将CPU、代码和数据分开(数据独立),形成清晰的模型,较好的面相对象思想。
    劣势:编程稍微复杂,如果需要访问当前线程需要用Thread.currentThread方法来获取
采用继承Thread类的方式实现线程:

优势:编写简单,如果要获得当前线程直接this即可
劣势:线程类继承了Thread,不能在继承其他类

相对而言,用Runnable的方式更好,具体可以根据当前需要而定;使用 Lambda 表达式 + 匿名内部类实现超轻松。

谈谈对内部类的理解?
Lambda表达式的作用和基本语法


喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/900253
推荐阅读
相关标签
  

闽ICP备14008679号