Java学习笔记----线程基础

线程

线程,进程可进一步细化为线程,是一个程序内部的一条执行路径

线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小

线程的创建与启动

Java语言中的JVM允许程序运行多个线程,它通过java.lang.Thread来实现

Thread类的特性

  • 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体
  • 通过该Thread对象的start()方法来启动这个线程,而非直接调用run()

创建的方法:

  • 方法一

    • 继承Thread类的子类
    • 重写Thread的run()方法 --------------> 将此线程执行的操作声明在run()方法中
    • 创建Thread子类的子类的对象
    • 调用此对象的start()
      • 启动当前线程
      • 调用当前线程的run()
  • 方法二:

    • 创建一个线程是声明实现类Runnable接口

    • 重写实现run方法

    • 创建该类的对象

    • 在创建Thread时作为参数传递,并启动

      • 启动线程
      • 调用当前线程的run() -------> 调用了Runnable类型的target的run()
    •   Demo demo = new Demo();
        new Thread(demo).start();
      

两种方法比较

优先选择:实现Runnable接口的方式

原因:

  1. 继承的方法具有单继承的局限性
  2. 实现的方式更适合来处理多个线程有共享数据的情况

常用方法

start():启动当前线程,调用当前线程的run()方法
run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
currentThread():静态方法,返回当前代码执行的线程
getName():获取当前线程的名字
setName():设置当前线程的名字
yield():释放当前cpu的执行权
join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全执行完以后,线程a才结束阻塞状态
sleep(millitime):让当前线程"睡眠"指定的毫秒,在指定的millitime毫秒时间内,当前线程是阻塞状态
isAlive():判断线程是否存活

线程的优先级

MAX_PRIORITY : 10级

MIN_PRIORITY : 1级

方法

getPriority() : 返回线程优先级

setPriority(int newPriority) : 改变线程优先级

高优先级的线程要抢占低优先级cpu的执行权,但只是从概率上讲,并不意味着高优先级的执行完后低优先级才执行

posted @   Dezenady  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示