java学习阶段一 工具类(线程)

java学习阶段一 工具类(线程)

介绍

一个操作系统可以包含多进程

一个进程可以包含多线程

多线程:不同的子程序轮流执行

基本知识

  • 线程的创建

    所有线性类都需要实现Runnable接口(只有一个run方法) 而Thread类也实现类此接口 相当于完整的线程类的模板

    //第一种
    继承Thread类的方式创建线程类
    //Thread构造方法
    Thread()//空构造方法
    Thread(String name)// 创建线程名称   
    Thread(Runnable target)//创建基于Runnable接口实现类的线程对象
    Thread(Runnable target,String name)//以上两种  
    //Thread常用方法
    public void run()//线程相关代码
    public void start()//启动线程方法
    public static void sleep(long m)//线程休眠m毫秒的方法 
    public void join()//优先执行调用join方法的线程
    //第二种
    实现Runnable接口
    1创建接口实现类的对象
    2 创建Thread类的对象并传入接口实现类对象作为构造方法的参数
    3 Thread对象调用start方法
        
    Thread.currentThread().getName()//调用线程类的一个静态方法表示当前线程再调用getname表示获取当前线程名  
    
  • 线程状态

  • 新建 创建线程类对象后

  • 可运行 线程调用start方法后

    • 正在运行 获取cpu使用权到时间用完 转回到可运行/yield()

    • 阻塞状态 暂停状态 阻塞状态下只能先转到可运行状态

    • 终止状态 停止

    • sleep方法 使用场景 定期刷新数据

      public static void sleep(long millis)//休眠指定时间 单位毫秒
          
      
    • join方法 使用场景

      线程类下的对象调用join 使得该线程强制先执行 其他的线程则进入阻塞状态

      join有两个方法 一个无参 一个有参为long millis 限制该线程优先执行的最长时间

  • 线程优先级

    10个优先级 1-10的整数 数字越大优先级越高

    主线程默认为5

    其中也可以用优先级常量设置

    Thread类下优先级常量

    MAX_PRIORITY 10 MIN_PRIORITY 1 NORM_PRIORITY 默认5

    获取和设置

    public int getPriority() //获取
    public void setPriority(int newPriority)//设置优先级
    
  • 同步

    //synchronized 同步关键字 可以用在成员方法 静态方法 语句块
    //在执行完此关键字下的代码中不允许被打断
    
  • 线程间通信与死锁

    //死锁为所有线程都处于等待状态
    wait()//中断方法的执行 使线程等待
    notify()//唤醒处于等待的某一个线程,使其结束等待
    notfyAll()//唤醒所有处于等待的线程 使它们等待结束
    

注意事项

1 线程只能启动一次

2 主方法本身为一个线程

3 允许过程随机

4 run方法可以被多个线程使用

5 优先级不能完全保证先执行

原文地址:https://www.cnblogs.com/tigo/p/14443957.html