您的位置:首页 > 编程语言 > Java开发

Java_09_07课堂总结

2011-09-07 14:16 225 查看
课堂总结

一、interrupt()方法:中断线程

(一)但实际上该方法不会中断正在执行的线程,只是将线程的标志位设置成true(可以用isInterrupted()方法测试该线程的中断标记,并不清除中断标记,static的方法interrupted()测试当前执行的线程是否被中断,并且在肯定的情况下,清除当前线程对象的中断标记并返回true);

(二)如果线程在调用sleep(),join(),wait()方法时线程被中断,则这些方法会抛出InterruptedException,在catch块中捕获到这个异常时,线程的中断标志位已经被设置成false了 。

public final void join()//让线程加入执行,执行某一线程join方法的线程会被冻结,等待某一线程执行结束,该线程才会恢复到可运行状态

public final boolean isAlive()

将线程标记为守护线程(后台线程):setDaemon(true); 注意该方法要在线程开启前使用。和前台线程一样开启,并抢资源运行,所不同的是,当前台线程都结束后,后台线程会自动结束。无论后台线程处于什么状态都会自动结束。

实例,编写程序,演示线程对象的生命周期从创建到结束的过程,期间使用new()、start()、interrupt()等方法。

(三)为什么需要“线程同步”

线程间共享代码和数据可以节省系统开销,提高程序运行效率,但同时也导致了数据的“访问冲突”问题,如何实现线程间的有机交互、并确保共享资源在某些关键时段只能被一个线程访问,即所谓的“线程同步”(Synchronization)就变得至关重要。

二、互斥锁

(一)每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。

(二)Java对象默认是可以被多个线程共用的,只是在需要时才启动“互斥锁”机制,成为专用对象。

(三)关键字synchronized用来与对象的互斥锁联系

(四)某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对象。

三、死锁

两个线程A、B用到同一个对象s(s为共享资源),且线程A在执行中要用到B运行后所创造的条件。在这种前提下A先开始运行,进入同步块后,对象s被锁定,接着线程A因等待B运行结束而进入阻塞状态,于是B开始运行,但因无法访问对象s,线程B也进入阻塞状态,等待s被线程A解锁。最终的结果:两个线程互相等待,都无法运行。

四、线程同步通信

为避免死锁,就应该让线程在进入阻塞状态时尽量释放其锁定的资源,以为其他的线程提供运行的机会,Object类中定义了几个有用的方法:wait()、notify()、notifyAll()。

wait():被锁定的对象可以调用wait()方法,这将导致当前线程被阻塞并释放该对象的互斥锁,即解除了wait()方法当前对象的锁定状态,其他的线程就有机会访问该对象。

notify():唤醒调用wait()方法后被阻塞的线程。每次运行该方法只能唤醒一个线程。

notifyAll():唤醒所有调用wait()方法被阻塞的线程。

java.util包中的Timer和TimerTask类也可实现多线程

Timer类实现的是类似闹钟的功能,也就是定时或者每隔一定时间间隔触发一次线程。

TimerTask类是一个抽象类,该类实现了Runnable接口,具备多线程的能力。

通过继承TimerTask类创建子类,使该子类获得多线程的能力,将需要多线程执行的代码书写在run方法内部,然后通过Timer类启动线程的执行。

五、schedule()方法

public void schedule(TimerTask task,Date time):该方法的作用是在到达time指定的时间或已经超过该时间时执行线程task。

Date d = new Date(2009-1900,10-1,1,10,0,0);

t. schedule(task,d);

public void schedule(TimerTask task, Date firstTime, long period):在时间到达firstTime开始,每隔period毫秒就启动一次task指定的线程,这种方式会重复启动线程。

Date d = new Date(2009-1900,10-1,1,10,0,0);

t. schedule(task,d,20000);

总结:今天复习了下锁的概念,又讲了下时钟的作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: