上一页 1 ··· 9 10 11 12 13 14 下一页

2018年9月25日

ReentrantLock(重入锁)的好搭档:Condition 条件

摘要: 如果大家理解了Object.Wait()和Object.notify()方法的话,那么就会很容易的了解Condition对象了;它和wait()和notify()方法的作用是一致的,但是wait()和notify()是和synchronized关键字合作使用的,而Condition是和Reentra 阅读全文

posted @ 2018-09-25 10:45 AoTuDeMan 阅读(1200) 评论(0) 推荐(0) 编辑

2018年9月21日

ReentrantLock

摘要: ReentrantLock可以完全替代synchronized关键字,在Java1.5之前,ReentrantLock的性能远远好与synchronized,在1.5之后,Java1.6开始,JDK在synchronized上做了大量的优化,使得两者的性能差距并不大,但是在使用的灵活性上,Reent 阅读全文

posted @ 2018-09-21 16:54 AoTuDeMan 阅读(363) 评论(0) 推荐(0) 编辑

2018年9月20日

synchronized

摘要: 线程安全是并行程序的根本和根基。一般来说,程序的并行化是为了获取更高的执行效率,但前提是,高效率不能以牺牲正确为代价。 先看下面这种情况: 上述代码运行多次发现,输出都比20000小,我们用两个线程去各自累加10000次。这就是多线程中的线程不安全问题。 分析一下产生这种情况的原因: 两个线程同时读 阅读全文

posted @ 2018-09-20 15:15 AoTuDeMan 阅读(437) 评论(0) 推荐(0) 编辑

2018年9月19日

volatile

摘要: volatile英文解释为:易变的,不稳定的。这也就是volatile在Java关键字中的语义。 当你用volatile去申明一个变量时,就等于告诉了虚拟机,这个变量极有可能会被某些程序或者线程修改。为了确保这个变量被修改后,应用程序范围内的所有线程都能够“看到”这个改动,虚拟机就必须采取一些特殊的 阅读全文

posted @ 2018-09-19 21:45 AoTuDeMan 阅读(1192) 评论(0) 推荐(0) 编辑

线程等待(wait)、通知(notify)、等待线程结束(join)和谦让(yield)

摘要: 线程等待(wait)、通知(notify) 为了支持多线程之间的协作,JDK提供了两个非常重要的接口:线程等待wait()和通知notify()方法。这两个方法并不是在Thread类中的,而是Object类,这也就意味着任何对象都可以调用者两个方法,下面来看这两个方法的签名: 当在一个对象实例上调用 阅读全文

posted @ 2018-09-19 14:40 AoTuDeMan 阅读(1003) 评论(0) 推荐(0) 编辑

2018年9月18日

线程中断

摘要: 在Java中,线程中断是一种重要的线程协作机制,从表面上来看,中断就是让目标线程停止执行的意思,实际上却并非如此。 严格上讲,线程中断并不会使线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出了。至于目标线程接到通知后如何处理,则完全由目标线程自行决定。这点很重要,如果中断后,线程立 阅读全文

posted @ 2018-09-18 17:35 AoTuDeMan 阅读(286) 评论(0) 推荐(0) 编辑

JMM(Java Memory Model)、原子性、可见性,有序性

摘要: 由于并发程序比串行程序复杂得多,其中一个重要原因是在并发程序下数据访问的一致性和安全性将会受到严重的挑战。我们需要在深入了解并行机制的前提下,再定义一种规则,保证多个线程间可以有效的,正确的协同工作。JMM就是为此而生的。 JMM的关键技术点都是围绕着多线程的原子性、可见性和有序性来建立的,下面我们 阅读全文

posted @ 2018-09-18 14:09 AoTuDeMan 阅读(647) 评论(0) 推荐(0) 编辑

2018年9月14日

并发级别

摘要: 由于临界区的存在,多线程之间的并发必须受到控制,根据控制并发的策略,我们可以把并发的级别分类,大致上可以分为阻塞,无饥饿,无障碍、无锁、无等待几种。 1 阻塞 一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。比如:使用synchronize关键字或者其他重入锁,我们得到的就是阻塞 阅读全文

posted @ 2018-09-14 16:17 AoTuDeMan 阅读(1046) 评论(0) 推荐(0) 编辑

并发的一些概念

摘要: 1.同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次方法的调用,同步方法一旦开始,调用者就必须要等到方法调用返回后,才能继续后续的行为;异步方法更像是一个消息的传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作,而异步方法通常会在另外一个线程 阅读全文

posted @ 2018-09-14 16:16 AoTuDeMan 阅读(608) 评论(0) 推荐(0) 编辑

2018年9月12日

单例模式以及如何强化单例属性

摘要: 特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这个实例。优点:提供了对唯一实例的受控访问;由于系统内存中只存在一个对象,因此可节约系统的资源,对于一些频繁的创建和销毁的对象,单例模式可以提升系统的性能。单例模式可以避免对资源的多重占用,例如一个写文件操作, 阅读全文

posted @ 2018-09-12 15:49 AoTuDeMan 阅读(708) 评论(0) 推荐(0) 编辑

上一页 1 ··· 9 10 11 12 13 14 下一页

导航