线程学习day2(线程的方法补和优先级,线程的生存周期,解决线程安全问题方法)

58 阅读1分钟
  1. 线程的方法
    1. 成员方法(补)

      方法名说明
      yield()静态方法,释放当前线程cpu的执行权
      join()等待这个线程结束
      isAlive()判断这个线程是否存活
    2. 优先级

      1. 方法
      方法名说明
      getPriority()获取线程的优先级.
      setPriority(int n)设置线程的优先级,范围1到10.
      1. 常量 MAX_PRIORITY(10) 最高优先级
        MIN_PRIORITY(1) 最低优先级
        NORM_PRIORITY(5) 普通优先级
  2. 线程的生存周期
    1. 图片 qq_pic_merged_1745157497327.jpg
    2. 种类
      NEW,RUNNABLE,BLOCKED,WATING,TIMED_WATING,TERMINATED.
  3. 解决线程安全问题
    1. 方法1(同步代码块)
      1. synchronized(同步监视器) {
        //需要被同步的代码
        }

      2. 注意:

        • 需要被同步的代码,即操作共享数据的代码.
        • 共享数据:多个线程需要操作的数据.
        • synchronized(){}的功能:当一个线程进入同步代码块时,其他线程必须等待.
        • 同步监视器:
          ①也叫锁,哪个线程拥有锁,那个线程可以执行synchronized包裹的代码.
          ②任何一个类的对象都可以当锁,但是多个线程必须公用一个同步监视器.
      3. 一般来说同步代码块的锁:

        实现线程的方法同步监视器
        实现Runnable接口this
        继承Thread类子类.class

        ps:其实只要保证作同步监视器的对象在各个线程中是唯一的,就可以当同步监视器.但是一般用以上情况.而且有时不能用,这时候具体问题具体分析.

    2. 方法2(同步方法)
      1. 用synchronized修饰方法.

      2. 注意:

        用synchronized修饰的方法默认同步监视器
        非静态方法this
        静态方法当前类.class

        ps:具体问题具体分析