多线程 JVM
shengyao15
这个作者很懒,什么都没留下…
展开
-
ThreadLocal 总结
threadLocal可以避免在多线程程序中使用大量的synchronied同步锁,因为这样会降低性能,将会有多线程安全问题的变量放到threadLocal中就ok了 Spring控制的service层 dao层对象都是单例的,spring用threadlocal的方式将所有成员变量管理起来,所以不存在多线程问题 ------------------------- 在web应用中,将...原创 2011-04-28 15:51:37 · 83 阅读 · 0 评论 -
JVM 设置与调优
JVM调优 1, 不是分配的内存越大越好, 内存越大full gc时处理的数据就越多,阻塞的时间就越长。 2, 如果系统小对象多,Young区最好大一点 3, 如果系统session对象多, Old区要大一点 4, 如果有大量的对象没有进过9次Young区迭代而是因为suvivor区不够了就进入old区时,需要调整SurvivorRatio 的比例 5, 有时需要导出head dump文...原创 2014-04-17 13:23:23 · 100 阅读 · 0 评论 -
final 使用的场景
如果多线程代码写在 主线程中 (可以用到主线程中的变量) 这些变量需要用final来修饰 [code="java"] public List statisticAllProducerLog(final String reportS, final String[] urls) throws IOException, ParseException { final List r...原创 2014-03-31 17:28:16 · 125 阅读 · 0 评论 -
ThreadLocal 解决 多线程问题
不仅在客户端, 在服务器端也会有类似问题, servlet是多线程的, 调用后台的service层也是多线程的,如果service层中静态的,或是单例的 成员变量有多线程安全问题,就像 SimpleDataFormat 一样就会出现 取得的日期错误。 --------------------------------- 在 log-services 项目中 用多线程来从不同ip下载,解析...原创 2014-03-31 13:32:19 · 87 阅读 · 0 评论 -
BlockingQueue 多线程处理
更新表1000行 中的状态, 每次update 需要一秒的时间 模拟真实的业务逻辑。 怎么能最快的更新完表中所有的数据 SingleUpate 每次查询后更新 MultipleUpdate 用BlockingQueue 的方式实现多线程更新 SingleUpate [code="java"] package com.tristan.bigdata; import jav...原创 2014-03-21 15:50:25 · 329 阅读 · 0 评论 -
缓存用户名密码信息
web项目的用户验证信息可以存放在session中,访问下个页面的时候会先去session中查找判断。但如果是另一个app应用程序通过httpclient进来的话无法使用session来保存信息 (没有cookie), 这时每次请求都需要验证用户名密码,效率低。 可以新建一个Map的static成员变量, app第一次验证通过后将用户名密码保存在里面,再次进来的话只需要对比下Map中的数据就...原创 2014-03-05 16:30:37 · 576 阅读 · 0 评论 -
Lock Synchronized 区别
1, Lock是由java代码实现的 其原理和Atomic有点像,都是用到了CAS,Lock需要手动关闭。 synchronized是由jvm实现的。 2, 在高并发下,lock要比synchronized快点 3, lock中有读写锁的概念,可以区分哪些是要锁,哪些不用,synchronized则没有 4, 一个lock对象中可以有多个condition,用来await signal,更加...原创 2014-05-21 16:23:32 · 203 阅读 · 0 评论 -
多线程2
[b]------------多线程状态-----------------[/b] 除了新建new, 就绪runnable, 运行running, 死亡dead外,核心的就是阻塞状态blocked 可以分为三种 休眠 sleep 等待 wait 监视 synchronized 常说的死锁发生在wait和synchronized中 wait notifyAll 见图片 访问...原创 2014-05-18 10:17:04 · 67 阅读 · 0 评论 -
AC - FileMonitor
用nio包下的类来监控文件是否被修改了,通过RandomAccessFile将增量文件通过IO放到queue中, 对外提供JMX方法 nio最重要的用途是开发高并发的服务器,它的非阻塞式会比io的阻塞式效率高很多倍。 FileOutputStream 有参数可以控制 追加和覆盖 java多线程写入同一文件 将多个线程的内容先放到一个queue中, 再将queue中的内容写入...原创 2013-12-30 15:10:57 · 86 阅读 · 0 评论 -
内存模型 - 多线程
[b]--------概述---------[/b] 需要多任务处理的原因是 计算机的运算速度和它的存储和通讯子系统速度的差距太大,大部分时间都花在了磁盘IO,网络通信和数据访问上。 使用一些手段把处理器的运算能力压榨出来, 否则就会造成很大的浪费。 高速缓存 内存和CPU之间有几个数量级的差距,所以引入了高速缓存,用以通讯。 这就导致了缓存一致性的问题。 主内存,工作内存和...原创 2014-05-05 10:46:02 · 85 阅读 · 0 评论 -
MapReduce
如果想统计下过去10年计算机论文出现最多的几个单词,看看大家都在研究些什么,那收集好论文后,该怎么办呢? 方法一:我可以写一个小程序,把所有论文按顺序遍历一遍,统计每一个遇到的单词的出现次数,最后就可以知道哪几个单词最热门了。 这种方法在数据集比较小时,是非常有效的,而且实现最简单,用来解决这个问题很合适。 方法二:写一个多线程程序,并发遍历论文。 这个问题理论上是可以高度并发的,因为统计...原创 2014-04-22 13:45:07 · 67 阅读 · 0 评论