并行线程开发
rainyear
这个作者很懒,什么都没留下…
展开
-
线程池
最近业务需求,需要导出大量数据到Excel文档中。1>Action文件 //ExecutorService pool = Executors.newSingleThreadExecutor(); // 记录日志 异步将导出的xls文件写到服务器的制定目录 ExpProductThread thread = new ExpProductThread(new Long...原创 2011-09-28 11:51:58 · 61 阅读 · 0 评论 -
java数据结构:ConcurrentSkipListSet<E>与CopyOnWriteArraySet<E>
分类: java_数据结构 java_线程2012-07-05 13:59 313人阅读 评论(0) 收藏 举报[java] view plaincopyimport java.util.concurrent.ConcurrentSkipListSet; import java.util.concurrent.Exec...原创 2012-11-06 09:20:03 · 246 阅读 · 0 评论 -
java线程:信号量
Java 信号量 Semaphore 介绍 Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文...原创 2012-11-06 09:20:15 · 146 阅读 · 0 评论 -
java线程:一个死锁的小程序
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。“synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执行特定的代码块,因此,被允许执行的线程首先必须拥有对变量或对象的排...原创 2012-11-06 09:20:27 · 110 阅读 · 0 评论 -
Java 并发核心编程(转)
Java 并发核心编程(转)Java 并发核心编程内容涉及:1、关于java并发2、概念3、保护共享数据4、并发集合类5、线程6、线程协作及其他 1、关于java并发自从java创建以来就已经支持并发的理念,如线程和锁。这篇指南主要是为帮助java多线程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题是关于具有java语言风格的Threa...原创 2012-11-06 10:16:37 · 68 阅读 · 0 评论 -
Spring 线程池使用2
<!-- 配置异步线程执行器 --> <!-- 为异步线程执行器 进注入 --><bean id="taskExecutor"class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"><!-- 设置核心池子的大小 --><proper原创 2013-04-25 18:41:41 · 155 阅读 · 0 评论 -
线程同步与异步
Java中的线程同步与异步如何理解? 同步和异步最大的区别就在于。一个需要等待,一个不需要等待。比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线...原创 2012-11-22 23:53:58 · 69 阅读 · 0 评论 -
java线程内存模型,线程、工作内存、主内存
java线程内存模型线程、工作内存、主内存三者之间的交互关系图: key edeas所有线程共享主内存每个线程有自己的工作内存refreshing local memory to/from main memory must comply to JMM rules 产生线程安全的原因线程的working memory是cpu的寄存器和高速缓存的...原创 2012-11-24 02:08:15 · 64 阅读 · 0 评论 -
Amdahl 定律 (阿姆达尔定律)
有些问题使用越多的资源就能越快地解决——越多的工人参与收割庄稼,那么就能越快地完成收获。另一些任务根本就是串行化的——增加更多的工人根本不可能提高收割速度。如果我们使用线程的重要原因之一是为了支配多处理器的能力,我们必须保证问题被恰当地进行了并行化的分解,并且我们的程序有效地使用了这种并行的潜能。大多数并发程序都与农耕有着很多相似之处,由一系列并行和串行化的片断组成。Amdahl定律...原创 2012-11-24 02:14:24 · 683 阅读 · 0 评论 -
并发集合类ConcurrentSkipListSet
ConcurrentSkipListSetConcurrentSkipListSet(在JavaSE 6新增的)提供的功能类似于TreeSet,能够并发的访问有序的set。因为ConcurrentSkipListSet是基于“跳跃列表(skip list)”实现的,只要多个线程没有同时修改集合的同一个部分,那么在正常读、写集合的操作中不会出现竞争现象。有一个业务需求,需要对用户进行增...原创 2012-11-24 03:26:17 · 673 阅读 · 0 评论 -
java并发编程实践笔记(转)
一、 保证线程安全的三种方法: A. 不要跨线程访问共享变量B. 使共享变量是final类型的C. 将共享变量的操作加上同步二、 一开始就将类设计成线程安全的, 比在后期重新修复它,更容易.三、 编写多线程程序, 首先保证它是正确的, 其次再考虑性能.四、 无状态或只读对象永远是线程安全的.五、 不要将一个共享变量裸露在多线程环境下(无同步或不可变性保护)六、...原创 2012-11-28 01:14:29 · 216 阅读 · 0 评论 -
java线程:关于Callable和Future的简单使用:有返回值的线程
分类: java_线程2012-07-03 19:25 53人阅读 评论(0) 收藏 举报[java] view plaincopyimport java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent....原创 2012-11-06 09:19:48 · 328 阅读 · 0 评论 -
java线程:互斥锁与读写锁
java线程:互斥锁与读写锁分类: java_线程2012-07-04 02:52 67人阅读 评论(0) 收藏 举报两种互斥锁机制:1、synchronized2、ReentrantLockReentrantLock是jdk5的新特性,采用ReentrantLock可以完全替代替换synchronized传统的锁机制,而且采用ReentrantLock...原创 2012-11-05 17:34:58 · 216 阅读 · 0 评论 -
java中join(),yield(),sleep()以及wait()的区别(转)
java之yield(),sleep(),wait()区别详解-备忘笔记博客分类: java-->>线程java线程sleep yieldrun start 1、sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例如有两个线程...原创 2012-03-19 17:34:10 · 76 阅读 · 0 评论 -
java synchronized与lock区别 转
java synchronized与lock区别 synchronized 修饰方法时 表示同一个对象在不同的线程中 表现为同步队列如果实例化不同的对象 那么synchronized就不会出现同步效果了1.对象的锁 所有对象都自动含有单一的锁。 JVM负责跟踪对象被加锁的次数。如果一个对象被解锁,其计数变为0。在任务(线程)第一次给对象加锁的时候,计数变为1。每当这个相...原创 2013-03-20 01:59:06 · 83 阅读 · 0 评论 -
线程堵塞
线程堵塞堵塞状态是前述四种状态中最有趣的,值得我们作进一步的探讨。线程被堵塞可能是由下述五方面的原因造成的:(1) 调用sleep(毫秒数),使线程进入“睡眠”状态。在规定的时间内,这个线程是不会运行的。(2) 用suspend()暂停了线程的执行。除非线程收到resume()消息,否则不会返回“可运行”状态。(3) 用wait()暂停了线程的执行。除非线程收到nofify()...原创 2012-03-27 15:17:42 · 122 阅读 · 0 评论 -
Spring 线程池使用
Spring 线程池使用/** * */一个日志管理的类:在批理更新,插入,等操作package com.xiu.order.core.orders.impl;import java.util.List;import org.springframework.core.task.TaskExecutor;import com.xiu.common.d...原创 2012-03-28 12:47:34 · 216 阅读 · 0 评论 -
特殊的队列:BlockingQueue 使用(转)
本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作. 本例再次实现11.4线程----条件Co...原创 2012-03-28 14:49:46 · 63 阅读 · 0 评论 -
线程并发
1:>内存模型究竟什么是内存模型?内存模型描述了程序中各个变量(实例域、静态域和数组元素)之间的关系2>线程安全的本质体现在两个方面,A变量安全:多线程同时运行一段代码B线程同步:一个线程还没执行完,另一个线程又进来接着执行。3>同步请求和异步请求的区别 同步——使用者通过单个线程调用服务;该线程发送请求,在服务运行时阻塞,并且等待响应。(打电话) 异步——...原创 2012-03-31 15:41:51 · 70 阅读 · 0 评论 -
java线程:三种方式实现生产者消费者问题_1
java线程:三种方式实现生产者消费者问题_1分类: java_线程2012-07-03 13:51 45人阅读 评论(0) 收藏 举报本人采用java语言,用三种方式实现生产者——消费者的经典问题,至于生产者和消费的问题就不多说了,以下是第一种方式的具体代码:[java] view plaincopy...原创 2012-11-05 14:22:41 · 108 阅读 · 0 评论 -
java线程:三种方式实现生产者消费者问题_2
java线程:三种方式实现生产者消费者问题_2分类: java_线程2012-07-03 14:31 37人阅读 评论(0) 收藏 举报上一种方式是采用synchronized关键字实现生产者消费者的问题,那是传统的做法,现在采用jdk1.5语法的新增的并发机制实现,以下是仓库类的具体代码实现(生产者类、消费者类类均不变,请参考上一篇文章:《三种方式实现生产者消费者...原创 2012-11-05 14:26:23 · 73 阅读 · 0 评论 -
java线程:几个实用的线程工具类
java线程:几个实用的线程工具类分类: java_线程2012-07-04 16:29 89人阅读 评论(0) 收藏 举报CyclicBarrier[java] view plaincopyimport java.util.concurrent.CyclicBarrier; import java.util.concurren...原创 2012-11-05 15:15:44 · 188 阅读 · 0 评论 -
java线程:三种方式实现生产者消费者问题_3
java线程:三种方式实现生产者消费者问题_3分类: java_线程2012-07-03 15:02 36人阅读 评论(0) 收藏 举报实现生产者——消费者问题的第三种方式:使用java5提供的java.util.concurrent.BlockingQueue阻塞队列实现,你可以看到仓库类代码实现更加简洁了。同样,生产者类、消费者类都不变化(《java线程:三种方式...原创 2012-11-05 17:34:13 · 207 阅读 · 0 评论 -
java ExecutorService 线程池Callable 和 Future接口
javaEye转载(java多线程 Callable 的实现),里面涉及到ExecutorServiceJava代码 import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executo...原创 2012-08-29 21:10:02 · 59 阅读 · 0 评论