线程的生命周期:
新建 |
就绪 |
运行 |
死亡 |
堵塞 |
start() |
CPU可用 |
任务完成 |
线程优先级
1、 把线程从就绪状态进入运行状态的过程叫做线程调度。负责调度工作的机构叫做调度管理器。
2、 线程的优先级别1~10
3、 常用方法:
Void run()//创建该类的子类时必须实现的方法
Void start()//开启线程的方法
Static void sleep(毫秒)//释放cpu的执行权,不释放锁
Static void sleep(毫秒,纳秒)//
Static void yield()//可以对当前线程进行临时暂停(让线程将资源释放出来)
Final void wait()//释放cpu的执行权,释放锁
Final void notify()
Void join()//可以让当前线程进行临时暂停(让线程将资源释放出来)
线程同步:
临界资源
多个线程间共享的数据称为临界资源(Critical Resource),由于是线程调度器负责线程的调度,程序员无法精确控制多线程的交替顺序。因此,多线程对临界资源的访问有时会导致数据的不一致行。
互斥锁
每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
Java对象默认是可以被多个线程共用的,只是在需要时才启动“互斥锁”机制,成为专用对象。
关键字synchronized用来与对象的互斥锁联系
当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对象。