上一页 1 ··· 68 69 70 71 72 73 74 75 76 ··· 118 下一页
摘要: 以下内容转自http://ifeve.com/compare-and-swap/: CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。 阅读全文
posted @ 2017-06-17 16:47 EasonJim 阅读(1430) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/thread-pools/: 线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用。因为每启动一个新线程都会有相应的性能开销,每个线程都需要给栈分配一些内存等等。 我们可以把并发执行的任务传递给一个线程池,来替代为每个并发执行的任 阅读全文
posted @ 2017-06-17 16:41 EasonJim 阅读(441) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/blocking-queues/: 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样 阅读全文
posted @ 2017-06-17 16:34 EasonJim 阅读(413) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/semaphore/: Semaphore(信号量) 是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失(译者注:下文会具体介绍),或者像锁一样用于保护一个关键区域。自从5.0开始,jdk在java.util.concurrent包里提供了Se 阅读全文
posted @ 2017-06-17 16:30 EasonJim 阅读(381) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/reentrance-lockout/: 重入锁死与死锁和嵌套管程锁死非常相似。锁和读写锁两篇文章中都有涉及到重入锁死的问题。 当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死。可重入的意思是线程可以重复获得它已经持有的锁。Jav 阅读全文
posted @ 2017-06-17 16:20 EasonJim 阅读(368) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/read-write-locks/: 相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所 阅读全文
posted @ 2017-06-17 16:14 EasonJim 阅读(856) 评论(0) 推荐(0)
摘要: 一、以下是具体分析: 以下内容转自http://fgh2011.iteye.com/blog/1771649: 使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是OpenJDK,它与Sun JDK有什么关系和区别呢 阅读全文
posted @ 2017-06-17 02:55 EasonJim 阅读(53345) 评论(1) 推荐(2)
摘要: 以下内容转自http://ifeve.com/locks/: 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchron 阅读全文
posted @ 2017-06-16 18:10 EasonJim 阅读(365) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/slipped-conditions/: 所谓Slipped conditions,就是说, 从一个线程检查某一特定条件到该线程操作此条件期间,这个条件已经被其它线程改变,导致第一个线程在该条件上执行了错误的操作。这里有一个简单的例子: 我们可以看到,l 阅读全文
posted @ 2017-06-16 17:50 EasonJim 阅读(387) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/nested-monitor-lockout/: 嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景: 你可以能会说,这是个空想的场景,好吧,让我们来看看下面这个比较挫的Lock实现: 可以看到,lock()方法首先在”this”上同步,然后在mon 阅读全文
posted @ 2017-06-16 17:37 EasonJim 阅读(3153) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/starvation-and-fairness/: 如果一个线程因为CPU时间全部被其他线程抢走而得不到CPU运行时间,这种状态被称之为“饥饿”。而该线程被“饥饿致死”正是因为它得不到CPU运行时间的机会。解决饥饿的方案被称之为“公平性”–即所有线程均能 阅读全文
posted @ 2017-06-16 12:35 EasonJim 阅读(910) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/deadlock-prevention/: 在有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术: 加锁顺序 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。 如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发 阅读全文
posted @ 2017-06-16 05:10 EasonJim 阅读(805) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/deadlock/: 死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。 例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发 阅读全文
posted @ 2017-06-16 04:39 EasonJim 阅读(989) 评论(0) 推荐(0)
摘要: 以下内容转自http://tutorials.jenkov.com/java-concurrency/volatile.html(使用谷歌翻译): Java volatile关键字用于将Java变量标记为“存储在主存储器”中。更准确地说,这意味着,每个读取volatile变量将从计算机的主存储器中读 阅读全文
posted @ 2017-06-16 03:25 EasonJim 阅读(441) 评论(0) 推荐(0)
摘要: 以下内容转自http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html(使用谷歌翻译): 术语并发和并行性通常用于多线程程序。但是,并发和并行性究竟是什么意思呢,它们是相同的术语还是什么? 简短的答案是“不 阅读全文
posted @ 2017-06-16 03:19 EasonJim 阅读(1948) 评论(0) 推荐(0)
摘要: 以下内容转自http://tutorials.jenkov.com/java-concurrency/same-threading.html(使用谷歌翻译): 相同线程(同一线程)是一种并发模型,其中单线程系统扩展到N个单线程系统。结果是并行运行的N个单线程系统。 同一个线程系统不是一个纯粹的单线程 阅读全文
posted @ 2017-06-16 02:58 EasonJim 阅读(662) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/java-theadlocal/: Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到 阅读全文
posted @ 2017-06-16 01:15 EasonJim 阅读(526) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/thread-signaling/: 线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 例如,线程B可以等待线程A的一个信号,这个信号会通知线程B数据已经准备好了。 1、通过共享对象通信 线程间发送信号的一个简单 阅读全文
posted @ 2017-06-15 21:11 EasonJim 阅读(378) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/synchronized-blocks/: Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静态方法同步 阅读全文
posted @ 2017-06-15 18:44 EasonJim 阅读(376) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/java-memory-model-6/: Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 如果你想设计表现良好的并发程序,理解 阅读全文
posted @ 2017-06-15 04:34 EasonJim 阅读(409) 评论(0) 推荐(0)
上一页 1 ··· 68 69 70 71 72 73 74 75 76 ··· 118 下一页