- 浏览: 312783 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (118)
- oracle (16)
- java (13)
- jquery (16)
- hibernate (2)
- spring (14)
- struts (2)
- eclipse (1)
- birt (5)
- integrated skill (13)
- linux (9)
- css+html (5)
- redis (1)
- jqgrid (4)
- mybatis (2)
- multithreading (3)
- jvm (1)
- mvn (3)
- php (2)
- jms (2)
- photoshop (1)
- springmvc (3)
- cluster (1)
- cache (1)
- jquery-ui (2)
- 英语词根 (0)
- svn (0)
- ide (1)
- mysql (3)
- rich-text (1)
- golang (8)
- mac 10 (1)
- android (1)
- react (0)
- bootstrap (2)
- css (2)
- 1 (0)
- beego (1)
- pictures (1)
- java小生转战 (0)
- 转站通知 (0)
- 转站通知,,,啊啊啊 (1)
- threeperson (1)
- unity (1)
最新评论
-
zld406504302:
aaaddddddd
java小生转站threeperson博客 -
zld406504302:
aaaaaddd
java小生转站threeperson博客 -
zld406504302:
aaaaaaaaaaaa
java小生转站threeperson博客 -
乌发舞天:
UEditor 实例 -
van_2013:
请问这是订阅模式的配置吗?
SPRING JMS 整合ACTIVEMQ
把项目中一个大文件对比进行了简单了模拟,多线程将大文件下的多个文件分割,lock控制差异同步写入到一个list中;当所有线程执行完毕,read 所有内容。
package cn.com.ld.study.thread; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * @filename: LockTest * @description: TODO * @author java 小生 * @date 2013-2-18 下午6:07:34 */ public class LockTest { Lock rlock = new ReentrantReadWriteLock().writeLock(); Lock lock = new ReentrantLock();// 锁 private Collection<String> strc = new ArrayList<String>(); private int readSequence; private int writeTimes = 0; LockTest(int writeTimes) { this.writeTimes = writeTimes; } public boolean write(String name) { try { lock.lock(); readSequence++; System.out.println(name + " 被" + readSequence + "次写入"); strc.add(name + readSequence); } finally { lock.unlock(); } return writeTimes == readSequence ? true : false; } public void read() { System.out.println("读取写入内容开始....."); for (Iterator<String> iterator = strc.iterator(); iterator.hasNext();) { String type = (String) iterator.next(); System.out.println(type+" 被输出。。。。"); } System.out.println("读取写入内容结束....."); } public static void main(String[] args) throws InterruptedException { final LockTest lockTest = new LockTest(100); List<Future<Boolean>> fList = new ArrayList<Future<Boolean>>(); Callable<Boolean> write = new Callable<Boolean>() { @Override public Boolean call() throws Exception { return lockTest.write("张三"); } }; ExecutorService cachedService = Executors.newCachedThreadPool(); Future<Boolean> future = null; for (int i = 0; i < 100; i++) { future = cachedService.submit(write); fList.add(future); } while (true) { int writeLent = lockTest.strc.size() ; if (writeLent == 100 && fList.get(99).isDone()) { lockTest.read() ; break ; } } } }
发表评论
-
mvn assembly package jar 无法运行
2015-04-27 20:04 776项目中要跑了一个jar工程,每天做一次数据结 ... -
SPRING INTERCEPTOR 监控 JMS 发送接受性能
2013-07-18 17:17 1590将spring aspectj 和 jms 整合了一下, ... -
SPRING JMS 发送 接受 性能监控
2013-07-18 17:13 0将spring aspectj 和 jms 整合了一下, ... -
SLF4J jar包冲突的迷惑
2013-07-14 12:42 1487Running com.cn.ld.modules.jms.J ... -
SLF4J jar包冲突的迷惑
2013-07-14 12:42 0Running com.cn.ld.modules.jms.J ... -
spring jms 异步接受消息
2013-05-22 21:46 24spring jms 的监听器是可配置的,而且通常会交 ... -
自定义异常在指定的抛出次数和指定的时间内抛出,否则不抛出
2013-04-01 23:36 54今天有人提出一个问题: 1:自定义一个异常,默认抛出信息“我是 ... -
ExecutorService invokeAll 实例
2013-04-01 15:08 777710个班级,每个班级20名学生,在指定的时间内查询每 ... -
CountDownLatch 实例
2013-03-29 13:36 1026多线程模拟记者发布会。每个记者提一个问题,且发布会要等每 ... -
用enum替换Static final 常量
2013-03-27 16:10 2238一个task 需要对对8个元件页面显示字段的值进行格式 ... -
jar包方式发布项目
2013-03-26 15:20 42项目组新来了一个外包美工,做css+div+js特效。 ... -
ReadWriteLock 实例
2013-03-22 19:17 251ReadWriteLock 具有读写互斥,写同步,读 ... -
velocity 实例
2013-03-18 22:26 2004通过velocity对字符串进行格式化输出 packag ... -
Jsoup 解析html
2012-06-04 15:42 1436Jsoup 遍历html 是很便捷的,查看api 发现他的很多 ... -
java调用 数组作为参数的管道表函数
2012-05-03 17:29 495需求:用户导入100万白 ... -
debug 、info、waring、error、fatal
2012-03-23 15:08 1974源自:键盘动物_java ja ... -
java,spring,aspectj
2011-11-16 19:39 1192最近要项目有个新需求,统计查询的接口要进行 ... -
birt集成js、jsp,实现弹出层,局部刷新
2011-10-08 18:04 7035使用birt已有个把月,此处和大家分 ... -
Thread 初探
2011-09-22 17:12 1313对线程了解不多,且不经常去用,最近想起,小小了解,且 ... -
java 本地解析sql文件,执行批量更新
2011-03-22 00:41 2059java 解析sql文件,批量更 ...
相关推荐
3. 管道模式:使用PipedInputStream和PipedOutputStream实现线程间的通信,将数据从一个线程写入,另一个线程读出。 4. 线程池模式:通过ExecutorService和ThreadPoolExecutor管理线程资源,减少线程创建和销毁的...
Java NIO服务器的多线程设计有助于提高服务器的并发性能,特别是在高并发场景下,可以有效地利用系统资源,避免大量线程导致的内存消耗和上下文切换开销。同时,通过选择器的使用,减少了对主线程的占用,使得服务器...
【读者写者问题】是操作系统中典型的多进程同步问题,主要关注如何协调多个读者和多个写者对共享资源的访问,以确保数据的一致性。在这个课程设计中,学生需要在Linux或Windows环境下,使用C或Java语言实现一个程序...
多线程可以在同一进程内并发执行,提高程序的执行效率。在多核处理器上,不同的线程可以被分配到不同的CPU核心上执行,从而实现真正的并行计算。 2. 进程间的通信方式 进程间通信(IPC,Inter-Process ...
5. **并发与同步**:在多线程环境下,数据一致性至关重要。Java提供了各种同步机制,如`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法,以及`java.util.concurrent`包中的高级并发工具,如`...
3. **选择器(Selector)**:选择器允许单线程处理多个通道,它会监视多个通道的事件(如连接打开、数据到达等),当某个通道准备好进行读写时,选择器会通知我们。这样可以避免了传统的多线程模型,减少了系统资源的...
综上所述,环形缓冲区在单线程环境下的实现较为简单,而在多任务环境下,需要通过信号量或优化指针更新方式来处理并发访问带来的问题,以保证数据的一致性和程序的正确性。在实际应用中,开发者应根据系统需求和硬件...
8. **线程模型**: 由于NIO的异步特性,客户端可能使用单线程或多线程模型。单线程模型利用Selector处理所有连接,而多线程模型则为每个连接分配一个线程。前者节省线程资源,后者利于任务并行。 9. **...
Java NIO(New IO)是Java 2平台标准版(J2SE 1.4)引入的一个新特性,它为Java应用程序提供了非阻塞I/O操作的能力,极大地提升了I/O性能,并降低了多线程编程的复杂性。NIO与传统的IO(-blocking I/O)相比,最大的...
Java的Serializable接口标记类可以被序列化,`ObjectOutputStream`和`ObjectInputStream`则负责将对象写入和读出字节流。 6. **消息协议**: 聊天软件可能使用自定义的消息协议,比如基于JSON或XML的格式,用于...
9. **多线程测试**:在多核或多处理环境下,测试内存的并发访问能力,查找可能出现的竞态条件或其他同步问题。 10. **电源管理**:对于嵌入式系统,测试程序可能还会涉及到DDR的低功耗模式,如自刷新(Self-Refresh...
├—使用多线程读/写/校验,重叠IO,直接IO,从而实现设备最高读写性能。 ├—可以使用 UNIX通配符 样式的 包含/排除 筛选器。 ├—运行速度快,不占资源,因为仅使用 Win32 API 和 C 运行时设计,没有使用 MFC。 ...
5. **管道(Pipes)**:管道是两个线程之间进行单向通信的渠道,可以将数据从一个线程写入管道,然后由另一个线程读出。 6. **多路复用器(Multiplexers)**:Java NIO中的Selector就是一种多路复用器,它可以同时...
它由一个读端和一个写端组成,数据从写端写入,从读端读出。信号处理则是操作系统用来通知进程发生某些事件的一种机制,例如用户中断、硬件故障等。信号可以被捕获和处理,开发者可以通过编写信号处理器函数来响应...
Java网络编程涵盖了许多重要的概念,包括输入/输出(I/O)、多线程、网络通信以及数据库操作等。以下是一些相关的知识点: 1. **线程**:Java中的线程是程序执行的最小单元,可以并发运行。Java通过Thread类来表示...
- 管道是两个线程间通信的一种方式,其中一个线程写入的数据可以被另一个线程读出。Java NIO提供了Pipe类来实现这个功能。 Java NIO的使用可以显著提升I/O密集型应用的性能,尤其是在服务器端,可以利用较少的线程...
数据可以从源端写入,从目标端读出。 #### 结论 Java NIO 通过引入 Channel、Buffer 和 Selector 等概念,提供了一种更为高效、灵活的 I/O 操作方式。相比于传统的 Java IO,NIO 在并发处理方面具有明显的优势。...
在实际编程中,可以结合Java NIO与Java多线程技术,构建高效的网络应用服务器,如使用Selector监听多个ServerSocketChannel,当有新的连接请求时,通过一个单独的工作线程处理这个连接的读写操作。 总之,Java NIO...