摘要: 以下内容转自http://ifeve.com/thread-signaling/: 线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 例如,线程B可以等待线程A的一个信号,这个信号会通知线程B数据已经准备好了。 1、通过共享对象通信 线程间发送信号的一个简单 阅读全文
posted @ 2017-06-15 21:11 EasonJim 阅读(360) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/synchronized-blocks/: Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静态方法同步 阅读全文
posted @ 2017-06-15 18:44 EasonJim 阅读(367) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/java-memory-model-6/: Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 如果你想设计表现良好的并发程序,理解 阅读全文
posted @ 2017-06-15 04:34 EasonJim 阅读(400) 评论(0) 推荐(0)
摘要: 原始数据类型的变量存放在栈还是堆,应该由上下文去决定。 如下所示的局部方法中,定义了本地变量a,且为原始数据类型,所以存放在栈中。 再如下所示类中,定义了局部变量a,且为原始数据类型,而类被创建为对象后,为引用类型,那么这个对象存放在堆中,同时局部变量a也会随这个对象存放在堆中。 阅读全文
posted @ 2017-06-15 04:23 EasonJim 阅读(701) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/thread-safety-and-immutability/: 当多个线程同时访问同一个资源,并且其中的一个或者多个线程对这个资源进行了写操作,才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。 我们可以通过创建不可变的共享对象来保证对象在线 阅读全文
posted @ 2017-06-15 03:45 EasonJim 阅读(540) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/thread-safety/: 允许被多个线程同时执行的代码称作线程安全的代码。线程安全的代码不包含竞态条件。当多个线程同时更新共享资源时会引发竞态条件。因此,了解Java线程执行时共享了什么资源很重要。 局部变量 局部变量存储在线程自己的栈中。也就是说 阅读全文
posted @ 2017-06-15 03:34 EasonJim 阅读(2068) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/race-conditions-and-critical-sections/: 在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件。实际上,这 阅读全文
posted @ 2017-06-15 01:01 EasonJim 阅读(948) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/creating-and-starting-java-threads/: Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。 可以用如下方式用java中创建一个线程: Tread thread = new T 阅读全文
posted @ 2017-06-15 00:54 EasonJim 阅读(704) 评论(0) 推荐(0)
摘要: 以下内容转自http://ifeve.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B/: 并发系统可以采用多种并发编程模型来实现。并发模型指定了系统中的线程如何通过协作来完成分配给它们的作业。不同的并发模型采用不同的方式拆分作业, 阅读全文
posted @ 2017-06-15 00:24 EasonJim 阅读(1371) 评论(0) 推荐(0)