zoukankan      html  css  js  c++  java
  • 线程的创建方式比较

    线程的创建方式:
    1:通过继承Thread类来创建线程。

    2:通过实现Runnable接口来创建线程。

    然后在Main方法里分别创建通过继承Thread类和实现Runnable接口的线程,如下图:

    我们可以看见:通过继承Thread类的创建线程是直接new 一个对象的。而通过实现接口的是new 一个对象之后再在对象外面包一层Thread()。

    注意!!! 
    两种方法都对run()方法进行了重写,实际上,Thread类就已经实现了Runnable接口,Thread类里的run()方法就是对Runnable接口中的run()方法的重写。run()方法的最初来源其实就是Runnable接口里的抽象方法。而start()的最初来源是Thread这个类里面的。线程只有通过调用start()方法才能从新建状态到达就绪状态
    然后等待cpu的调度。Thread和Runnable接口都是在lang包里。

    总结:
    采用继承Thread类方式:
    (1)优点:编程简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获取当前线程。
    (2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
    采用实现Runnable接口方式:
    (1)优点:线程类只是实现了Runable接口,还可以继承其他类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相同的线程来处理同一份资源的情况,从而可以将cpu代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
    (2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。

  • 相关阅读:
    Hive metastore三种配置方式
    hive学习(一)hive架构及hive3.1.1三种方式部署安装
    hiveserver2的配置和启动
    spark安装配置
    Sqoop-1.4.6安装部署及详细使用介绍
    搭建本地yum源服务器
    Centos7.X安装impala(RPM方式)
    Hive安装与配置详解
    【图文详解】Hadoop集群搭建(CentOs6.3)
    Linux下实现免密码登录(超详细)
  • 原文地址:https://www.cnblogs.com/xm970829/p/12980611.html
Copyright © 2011-2022 走看看