![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程安全
文章平均质量分 84
iteye_2729
这个作者很懒,什么都没留下…
展开
-
线程安全扫盲贴一——什么是线程安全
线程的系统都写完了,遇到很多问题,刚开始写到处都在synchronized,跌倒又爬起来,现在回过头来看看JAVA并发实践,开始整理下。 《JAVA并发编程实践》说线程安全就是,在单线程执行时候,实例状态是正确的,在多线程执行的时候,状态仍要正确:a class is thread-safe when it continues to behave correctly when acce...原创 2012-12-31 17:41:04 · 123 阅读 · 0 评论 -
线程安全扫盲贴二——锁详解
上篇提了一点: 由于内部锁是基于线程而非调用的,当一个线程执行increase方法时,已经拿到了counter对象引用的锁,那么其他线程执行同一个对象的increase或increase2会堵塞等待counter对象锁。 这里涉及到线程的重进入机制,如果线程A进入了increase,那么它已经拿到了counter的对象锁,那么该线程也可以进入increase2,因为这里的increas...原创 2013-01-05 11:53:50 · 159 阅读 · 0 评论 -
线程池初始化
当尝试用1000条数据并发向消息中心发送消息时,消息中心接收到消息打印了日志后,后面的日志就没有再打印出来了。100条也有这个问题,最后1条发现也是这样,于是发送一条消息断点测试://将消息中心介接收的数据wsData,交给线程池管理器InfoReceiveThreadPoolManager 处理private void putReceiveCenter(WSData wsData ){...原创 2013-01-06 10:55:35 · 625 阅读 · 0 评论 -
使用visual vm 分析线程(上)
网上很多visual vm的指南手册之类,visual vm最新的下载好后,直接运行即可。如果无法运行,在右键选择要执行的类,选择Run As-->Open Run Dialog,在新窗口中选择Arguments标签。vm参数上增加:-XX:+PerfBypassFileSystemCheck 【代码背景介绍——4个线程】客户端向我的Server中发送消息,我...原创 2013-01-08 12:02:26 · 420 阅读 · 0 评论 -
使用visual vm 分析线程(下)
接着上一篇《线程安全扫盲贴三》,开始第二次测试。第二次测试这次并发1000个客户端消息,每次并发20条后休眠1秒。客户端消息发给我的Server后,我的Server再转发给消息指定的服务器。为了产生异常消息,我将指定的目标服务器关闭了,于是每次消息第一次发送完成后,都成为了一个异常消息,每个异常消息将会自动间隔30s;1m;2m发送3次,发送失败后停止发送。这样虽然是并发了1000...原创 2013-01-08 16:07:38 · 173 阅读 · 0 评论 -
并发Socket消息发送
线程安全扫盲贴四中,改了异常消息发送的方法,把调用客户端发送消息改成了直接写消息到接收消息队列中,这样虽然接收消息线程池的线程飘红,但总能堵塞堵塞着执行完。为什么客户端并发socket请求会一直卡住了呢?我也不知道。客户端发送socket的代码如下 /** * 发送消息 * @param msg消息 * @param encoding 消息的编码格式 * @th...原创 2013-01-08 17:33:22 · 249 阅读 · 0 评论 -
线程安全扫盲贴三——共享实例(Sharing Objects)
前面说了如何管理对共享、易变状态的数据的状态的访问,《JAVA并发编程》第三章主要介绍共享和发布可以被多线程安全访问的对象,使用了java.util.concurrent包下的类为基础,创建线程安全的类和构建安全的并发应用程序。 synchronized不仅仅与操作原子性和关键区域定界相关,它还有个重要却不明显的作用——内存可见性。同步不仅仅是防止线程修改...原创 2013-01-30 17:35:12 · 133 阅读 · 0 评论