这是马士兵老师的Java视频教程里的一个生产者消费者问题的模型[java]view plaincopypublicclassProduceConsumer{publicstaticvoidmain(String[]args){SyncStackss=newSyncStack();Producerpr...
分类:
编程语言 时间:
2015-01-22 17:59:11
阅读次数:
202
最近跟着java视频学到了多线程这块,觉着这块比较复杂,所以做个小总结。多线程安全问题的原因:通过图解:发现一个线程在执行多条语句时,并运算同一个数据时,在执行过程中,其他线程参与进来,并操作了这个数据。导致到了错误数据的产生。涉及到两个因素:1,多个线程在操作..
分类:
编程语言 时间:
2015-01-22 15:44:17
阅读次数:
136
Java对多线程的支持还是比较给力的,JDK1.6里面有现成的API可用,一般的多线程应用足够了,
使用的时候注意最好加一层壳子,至少方便日志打印和后续扩展,以下是一个简单的启用的例子
1. 定义线程池变量
//线程池维护线程的最少数量: 2;//线程池维护线程的最大数量: 100;//线程池维护线程所允许的空闲时间: 2s;//线程池维护线程所允许的空闲时间的单位: TimeUnit.SE...
分类:
编程语言 时间:
2015-01-21 11:43:18
阅读次数:
251
本文可作为传智播客《张孝祥-Java多线程与并发库高级应用》的学习笔记。
这一节我们做一个缓存系统。
在读本节前
请先阅读
ReentrantReadWriteLock读写锁的使用1
第一版
public class CacheDemo {
private Map cache = new HashMap();
public static void main...
分类:
其他好文 时间:
2015-01-21 00:01:29
阅读次数:
484
同步代码块是一种有效实现操作原子性的方法,上一章我们讲了一些同步的原子操作的基础。
现在我们回忆一下上一章的两个问题。
1:不同的synchronized的写法有什么区别,又该怎么写创建线程的代码呢?
以class实例对象作为锁的写法
写法1
package com.home.thread;
/**
* @author gaoxu
*
*/
public class SafeT...
分类:
编程语言 时间:
2015-01-20 23:57:52
阅读次数:
393
本文可作为传智播客《张孝祥-Java多线程与并发库高级应用》的学习笔记。
一个简单的例子
两个线程,一个不断打印a,一个不断打印b
public class LockTest {
public static void main(String[] args){
final Outputer outputer = new Outputer();
n...
分类:
编程语言 时间:
2015-01-20 18:09:25
阅读次数:
157
(一)java内存区域概况
jvm运行java程序时把所管理的内存分成几个部分:方法区、java栈、本地方法栈、java堆、pc程序计数器。
class字节码装载解析后,在多线程环境中,方法区和java堆数据共享,每个线程自带pc程序计数器和java栈,栈帧中包含方法的所有状态(局部变量、传参、返回值、运算中间结果等)。对共享数据需要考虑多线程并发问题。
更详细内容可参考《深入理解JVM虚拟...
分类:
编程语言 时间:
2015-01-20 10:34:31
阅读次数:
222
此篇文章写的是JDK1.5升级版的生产者和消费者。
Java 升级之后的解决方法:
Lock
java.util.concurrent.locks
接口 Lock
所有已知实现类: ReentrantLock,
ReentrantReadWriteLock.ReadLock,
ReentrantReadWriteLock.WriteLock...
分类:
编程语言 时间:
2015-01-19 22:41:28
阅读次数:
256
本文可作为传智播客《张孝祥-Java多线程与并发库高级应用》视频的学习记录。
为什么需要并发池
之前写并发的时候
new Thread(new Runnable(){
public void run{
//....
}
}).start();没有什么问题呀,为什么需要并发池呢?
我们拿tomcat来举个例子。每次我们对服务器做一个请求,tomcat就得分出一个线...
分类:
编程语言 时间:
2015-01-19 19:09:52
阅读次数:
260
生产者和消费者问题是多线程通信的经典问题。这类问题描述了这样一种情况:假设有一个仓库,用来存储产品,有生产者负责生产产品,有消费者负责消费。生产者生产的产品存放在仓库之中,消费者从仓库之中取出产品。显然这是一个同步问题,生产者和消费者共享同一资源,并且生产者和消费者之间彼此依赖,互为条件向前推进。那么,该如何编写代码来实现呢?
class Resource {
private String...
分类:
编程语言 时间:
2015-01-19 17:15:55
阅读次数:
251