---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
1、线程间通信:
其实就是多个线程在操作同一个资源,但是操作的动作不同。
wait; notify(); notifyAll();
都使用在同步中,因为要对持有监视器(锁)的线程操作。所以要使用在同步中,因为只有同步才具有锁。
为什么这些操作线程的方法要定义在Object类中呢?
因为这些方法在操作同步中的线程时,都必须要标识它们所操作线程的锁,只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。不可以对不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。而锁可以是任意对象,所以可以被任意对象调用的方法定义在Object类中。
JDK1.5中提供了多线程升级解决方案。
将同步Synchronized替换成现实Lock操作。将Object中的wait,notify,notifyAll,替换了condition对象。该对象可以Lock锁,进行获取。
释放锁的动作一定要执行。
2、停止线程
stop方法已经过时,那么如何停止线程呢?
只有一种方法,那就是run方法结束。
开启多线程运行,运行代码通常都是循环结构,只要控制住循环,就可以让run方法结束,也就是线程结束。
特殊情况:当线程处于冻结状态,就不会读取到标记,那么线程就不会结束。
面对这种特殊情况,当没有指定的方式让冻结的线程恢复到运行状态时,这时就需要对冻结进行清除。强制线程恢复到运行状态中来,这样就可以操作标记让线程结束。
Thread类中提供了这种方法:interrupt。
守护线程(后台线程):前台线程结束,后台线程自动结束。
join方法:等待调用该方法的线程结束,其他线程才能开始执行。
优先级:所有线程默认优先级为5.(1-10)
yield方法:暂停当前正在执行的线程对象,并执行其他线程。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net