初级必备:Java版本区别与了解_JavaSE_线程小结

    链接地址:http://www.xx566.com/detail/99.html

     java.lang.Thread类是传统java用来调度和管理线程的工具,其提供了多种方法来操控线程;从java 5开始,Java提供了Java.util.concurrent工具包用来进行并发编程,并引入了lock,其提供了Condition接 口,Condition实例实质被绑定在一个lock上,通过其提供的方法,也可以方便的对线程进行调度和管理,一系列眼花缭乱的方法:sleep()、 join()、yield()、interrupt()、wait()与await()、notify()与signal()、notifyAll()与 signalAll(),它们之间又有哪些异同呢,下面我们来逐一学习一下。

     sleep()方法:使调用此方法的线程暂停执行一段时间,让其他优先级低的线程有机会获得执行,sleep()方法不释放对象锁,即如果有Synchronized,或ReentrantLock时,其它线程仍不能访问共享数据。

     join()方法:使调用此方法的线程得以执行,当前线程阻塞,只有当调用join方法的线程执行完毕后,才继续执行当前线程,如线程A调用线程B.join(),则线程A阻塞,执行线程B,线程B执行完后,A才继续执行。

     yield()方法:与sleep()方法类似,暂停当前正在执行的线程对象,并执行其他具有同等优先级的线程,yield()方法无法指定当前线程的阻塞时间。

     wait()、notify()和notifyAll()用于协调多线程对共享数据的访问,必须在Synchronized代码块里面才可以使用这三个方 法,Java 5 提供了Condition,有与之类似的方法,await()、signal()和signalAll()。

     wait()方法:使当前线程暂停执行并释放对象锁,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中。

     await()方法:使当前线程在接收到信号或中断命令之前,一直处于等待状态,并释放与Condition相关的锁。

     notify()和signal()方法:随机选择线程等待池中的处于等待状态的线程,并将其唤醒。

     notifyAll()和signalAll()方法:唤醒所有处于等待状态的线程。

     下面提供几本关于并发编程的书籍,供大家下载学习,声明:仅供学习交流使用,如有侵权,请及时联系我,我会尽快修正。

     1、java线程基础                                                
     2、java并发编程实战                                         
     3、Java Concurrency in Practice(中文版)      

     4、Java Concurrency in Practice(英文版)   
     5、java多线程设计模式                                        
     6、java-threads-tutorial                                    
     7、Programming Concurrency on the JVM    

转载于:https://my.oschina.net/realfighter/blog/349702

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值