java多线程

实现多线程的方式:

  1、继承Thread

  2、实现Runnable接口

  3、Java 5以后创建线程还有第三种方式:实现Callable接口

 

实现Runnable接口相比继承Thread类有如下优势:

  1、可以避免由于Java的单继承特性而带来的局限
  2、增强程序的健壮性,代码能够被多个程序共享,代码与数据是独立的
  3、适合多个相同程序代码的线程区处理同一资源的情况

 

线程同步的方法:锁,synchronized块,信号量等。

锁的等级:方法锁、对象锁、类锁

 

wait()和sleep()的区别:

  sleep()方法是线程类(Thread)的静态方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复(线程回到就绪(ready)状态),因为调用sleep 不会释放对象锁。wait()是Object 类的方法,对此对象调用wait()方法导致本线程放弃对象锁(线程暂停执行),进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入就绪状态。

posted @ 2017-06-01 15:41  yl007  阅读(414)  评论(0编辑  收藏  举报