zoukankan      html  css  js  c++  java
  • Java基础回顾 —线程Thread源码注意

    1. Thread类也实现了Runnable接口,因此实现了Runnable接口中的run方法。
    2. 当生成一个线程对象时,如果没有为其设定名字,那么线程对象的名字将使用如下形式:Thread-number,该number将是自动增加的,并被所有的Thread对象所共享(因为是static的成员变量)。
    3. 当使用继承方式来生成对象时,我们需要重写run方法,因为Thread类的run方法只是调用Runable接口中的run(),本身什么事情也不做。
      当使用实现Runnable接口方式生成线程对象时,我们需要实现Runnable接口的run方法,然后使用new Thread( new MyThread() ),这时点线程对象的run方法会调用MyThread类的run方法,这样自己编写的run方法就执行了。
      tips1: Thread和Runable的子类都同时实现了Runable接口,且Thread类中维护了一个private Runable target实例。结构类似于代理类
    4. 线程的消亡不能通过调用一个stop()命令,而是让run()方法自然结束,或者通过给Thread变量赋值null来表明它被停止。
      tips2: 如果一个类继承Thread类,则不适合多个线程共享资源,而实现了Runnable接口,就可以方便的实现资源共享。
      tips3: 实现Runnable接口相对于继承Thread类来说有如下优势:
      1)适合多个相同程序代码的线程去处理同一资源的情况。
      2)可以避免由Java单继承带来的局限性。
      3)增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
      所以开发中多建议使用Runnable接口。
      官方一点的说法就是不推荐使用继承的方式,因为它将任务和运行任务的机制混在一起。将任务从线程中分离出来是比较好的设计。
  • 相关阅读:
    浅谈 C++ 多态性
    浅谈 C++ 继承
    C++ 深拷贝浅拷贝
    C++ 斐波那契数列
    C++ 指针函数和lambda
    设计模式之单例模式
    结构体中内存对齐和补齐
    AWS S3文件存储工具类
    Java Springboot学习(三) Thymeleaf 、mybatis-plus
    Java Springboot学习(三) 整合springmvc、jdbc、mybatis
  • 原文地址:https://www.cnblogs.com/nextStep/p/6691271.html
Copyright © 2011-2022 走看看