[Java复习]java线程

1.创建java线程

通过直接实例化Thread对象或实例化继承Thread对象来创建线程。

2.java线程的结束

方法一:线程到达run()方法的末尾

方法二:线程抛出一个未捕获到的Exception或者error

方法三:调用stop()

3.休眠

sleep():当前线程进入等待状态,直到过了指定时间或者另一线程对当前线程Thread调用了Thread.interrupt

调用了Thread.interrupt的休眠线程会抛出InterruptedException,此时线程知道他由于中断,不会查看计数器是否过期。

Thread.yield()并不引起休眠,暂停当前线程片段,让其他线程运行。当高优先级的调用Thread.yield()时,较低优先级线程就不会运行。

4.守护程序线程

即系统线程:如垃圾收集线程和jvm创建的其他线程。

当所有的非守护程序线程完成之后java程序退出。

任何线程都可以变成守护程序线程。用Thread.setDaemon()指明某个线程是守护程序线程。

5.线程有关的方法关键字汇总

start():启动线程,自动调用run()方法

run():线程真正运行的代码,必须是public切返回为void

Synchronized:保护共享数据。当一个线程访问时,被修饰的数据将被上锁,阻止其他线程访问。保持数据一致性的方法

  以下三个方法协调共享数据,必须在Synchronized语句块内使用。且不属于Thread类属于Object

  wait():使当前线程暂停并释放锁对象标志,让其他线程可以进入Synchronized块,当前线程被放入等待池中

  notify():由jvm任意唤醒一个等待池中的线程,并给上锁

    notifyAll():唤醒所有等待线程,给对象锁。

sleep():让当前线程暂停一段时间,使其他线程先执行(低、同、高优先级),但是不释放锁,有Synchronized块的,其它线程扔不能访问共享数据。注意该方法要捕获异常

join():调用join的线程完成run()方法里面的内容后,再执行join()。注意该方法需要捕获异常。

yield():让线程暂停,但是不能指定暂停的时间,只能让同优先级的线程执行

posted @ 2013-09-24 11:13  double_song  阅读(184)  评论(0编辑  收藏  举报