宋利兴__第十三章 多线程 第二节
第十三章 多线程 第二节
复习:进程里包含线程,多条控制流,多条线程共资源。
类具备多线程的能力三种方法:继承(extends)Thread类,实现(implements)Runnable接口,
线程的生命周期:
1、新建状态(new Thread)/Thread t1=new Thread();
2、就绪状态(runnable)线程已启动,正在等待CPU分配时间片;
3、运行(running)线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。
4、死亡(dead)自然终止:正常运行run()方法后终止
异常终止:调用stop()方法让一个线程终止运行
5、堵塞(blocked)1>正在睡眠,用sleep(long t)方法线程进入睡眠,2>正在等待:调用wait()方法, 3>被另一个线程所阻塞:调用suspend()方法
线程的优先级别:
把线程从就绪状态进入运行状态的过程叫做线程调度。负责调度工作的机构叫做调度管理器。
常用方法:run()/start()/sleep(long t)/sleep(long millis,int nanos)/wait()/notify()/yied()/stop().
线程对象的生命周期从创建到结束的过程期间使用:New()àstart()àInterrupt()中断方法。
线程的同步(Synchronization):线程间共享代码和数据可以节省开销,提高程序运行效率。
临界资源:多个线程间共享的数据称为临界资源!
每个对象都可应于一个可称为“互斥锁”的标记,这个标记可以用来保证在任一时刻,只能有一个线程访问该对象。
好处:解决了线程安全问题;死锁
线程同步通信:为避免死锁,就应该让线程在进入阻塞状态时尽量释放其锁定的资源,以为其他的线程提供运行的机会,Object类中定义了几个有用的方法:wait()、notify()、notifyAll()。