Day13 多线程

Day13

多线程

线程的五种状态

  • 被创建 new
  • 运行 run start
  • 消亡 stop run
  • 冻结 sleep wait notify
  • 临时阻塞状态

创建线程的第二种方式

实现Runnable接口,扩展已知类,通过接口来添加线程类的任务。

  • 定义类实现Runnable接口。
  • 覆盖接口中的run方法,将线程的任务代码封装到到run方法中。
  • 通过Thread类创建线程对象,将Runnable接口的子类对象作为Thread类的构造函数参数进行传递。
  • 调用线程对象的start方法开启线程。

实现接口的好处

  • 将线程的任务从线程的子类中分离出来,进行了单独的封装。将任务封装成了对象。————面向对象的思想。
  • 避免了java单继承的局限性。
    所以该方式较为常用。

同步

同步代码块

synchronized(对象)
{ 需要同步的代码 }
相当于一个对象锁,代码块内如果进入了一个进程,别的进程就进不去。

同步函数

  • 在方法前加synchronized关键字
  • 同步函数使用的锁是this
  • 但是建议使用同步代码块,更加灵活,且锁不唯一。
  • 静态的同步函数使用的锁是该函数所属的字节码文件对象,可以用getClass方法获取,也可以用当前 类名.class 形式表示

posted on 2017-03-25 22:55  hazelnut  阅读(56)  评论(0)    收藏  举报

导航