乐趣区

关于java:我在上海乐字节学习Java的第十六天持续更新中

总结

线程

  • 线程创立形式一:
  1. 继承 Thread 类(实现 Runnable 接口)
  2. 继承 Thread 类
  3. 重写 run 办法
  4. 创立子类对象
  5. 调用 start 办法(这个办法是 Thread 外面的办法)
  • 创立线程的形式二:

    start 办法是开启一个新的线程,会主动调用 run 办法

  1. 写一个类实现 Runnable
  2. 重写 run 办法
  3. 创立类的对象
  4. 将对象作为实例后 Thread 对象的参数传递
  5. 调用 start 办法
  • Thread 类中罕用办法:
  1. currentThread 获取以后线程对象
  2. setName 设置线程名字
  3. getName 获取线程名字
  4. setPriority 设置优先级
  5. getPriority 获取优先级
  6. sleep 使以后线程睡眠多少毫秒

线程平安

  • 当多个线程拜访同一资源时,如果没有做限度,会呈现线程平安问题
  • 解决线程平安的形式:

    形式一:应用 synchronized 同步、效率低、监听对象要保障唯一性

    同步代码块:

    synchronized(监听对象){

    会呈现线程平安的代码

    }

    对于监听对象:

    1.Runnable 的实现类能够用 this,Thread 的继承类不能用 this,不能保障唯一性

    2.static 润饰的对象能够,实现类里能够不必写,因为只创立了一个对象

    3. 常量池中的字符串能够

    4. 类锁能够:类名.class 和对象名.getClass()

    同步办法:

    public 前面加一个 synchronized 润饰,相当于 this,再加个 static 就相当于一个类锁

    形式二:jdk1.6 之后能够用 Lock 接口的实现类 ReentrantLock

    应用办法:

    Lock l = new ReentrantLock();

    l.lock();// 开锁

    try{

    存在线程平安的代码

    }finally{

    l.unLock()// 关锁

    }

    synchronized 的锁会主动开释,lock 的锁要手动开释

退出移动版