多线程编程注意点(持续更新)
2019独角兽企业重金招聘Python工程师标准>>>
1. 对象逸出(Escape)
构造函数中,当前对象还没初始化完成就暴露this给外部
package com.chstudy.unsafe;import java.util.ArrayList;
import java.util.List;public class EventEscape {private final List<Event> listOfEvents;public EventEscape(EventSource source) {source.registerListener(new EventListener() {@Overridepublic void onEvent(Event e) {doSomething(e);}});listOfEvents = new ArrayList<>();}void doSomething(Event e) {listOfEvents.add(e);}interface Event {}interface EventSource {void registerListener(EventListener listener);}interface EventListener {void onEvent(Event event);}
}
二、并发使用的类,对成员变量的访问需要同步
package com.chstudy.unsafe;import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;@WebServlet(urlPatterns = "/count.do")
public class UnsafeCountServlet extends GenericServlet implements Servlet {private Long count = 0L;public Long getCount() {return count;}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}count++;res.getWriter().write(count+"");res.flushBuffer();}}
三、JVM 参数,打印指定方法的汇编指令
-XX:+UnlockDiagnosticVMOptions -Xcomp -XX:+PrintAssembly -XX:CompileCommand=compileonly,*GoalNotifier.setGoal
-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly:开启JIT反汇编
-Xcomp:让虚拟机以编译模式执行代码,使得JIT编译可以立即触发 -XX:CompileCommand=compileonly,*GoalNotifier.setGoal:只反汇编GoalNotifier的setGoal方法
四、
转载于:https://my.oschina.net/chen1988/blog/1845807
多线程编程注意点(持续更新)相关推荐
- 实习中遇到值得积累下来的编程习惯(持续更新已结束-实习结束进入正式工作)
出来实习后遇到很多在编程上的问题.有很多是在编程上的小细节,这些细节有些很关键,有些无关紧要,但是均是值得积累下来并不断坚持下去的好习惯.好方法.所以在此积累下来,并持续更新~ magic numbe ...
- 【在线笔试题解题报告系列】网易2017校招内推笔试之编程题【持续更新】
网易今年把内推笔试放在牛客网上办,然后出了一批编程题. 题目在: http://www.nowcoder.com/test/2252286/summary http://www.nowcoder.co ...
- 【netty篇】- 第0章netty网络编程必备知识[持续更新中]~
一.三大组件简介 Channel与Buffer Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer).通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NI ...
- 各种编程资源,持续更新
QQ群:872144107更多视频以及学习资料诚心分享 备注:有部分视频可能已经失效,抱歉~ 极客学院小程序视频教程: 链接:https://pan.baidu.com/s/15Ysexba8D5Hy ...
- 程序设计编程题目(持续更新)
c语言题目 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,它是这样定义的:"水仙花数"是指一个3位数,它的各位数字的立方和等于其本身,比如,153= 13 +5 ...
- js函数式编程最佳实践 - 持续更新
函数式编程最佳实践 学习文档 函数式编程术语 数组字串处理 function addString(el){return el + "0"; } var newArr = arr.m ...
- 前端面试笔试编程题(持续更新中)
1. 求两个日期中间的有效日期(考虑闰年)(微众银行校招笔试) 如 2015-2-8 到 2015-3-3,返回[2015-2-8 2015-2-9-] 思路:使用毫秒数 一天一天地放进去 // 求 ...
- 嵌入式编程技巧(持续更新)
在操作系统定义全局指针时,在释放内存时一定要注意清指针 以rtthread 举例说明 unsigned char *ptest = null; ptest = rt_malloc(100); if(p ...
- 一些通用 编程变量 单词(常用变量名;持续更新...)
叙述 在编程中,除了与编程需求密切相关的关键变量.函数,还有很多非关键的变量例如:索引.计数.最值等等,变量命名还要求有较高的可读性和整洁性,往往使编程者头疼不已. 在此持续整理一些编程中约定俗成的命 ...
- 软件编程学习网站汇总——持续更新中
持续更新各种国内外关于编程语言学习及讨论的网站,有时间我会添加介绍,不过相信很多网站你们都熟悉了,喜欢的可以收藏,我也留着等以后需要的时候翻阅. 若链接有错误,提醒我下,我来改正.有其他好的站也可以推 ...
最新文章
- java note项目_note(java)
- 《高性能网站建设指南》学习笔记
- mysql 中存储引擎是什么意思_mysql常用的存储引擎是什么
- UNIYT关于V S2017,VS2019断点调试卡住的问题
- 肝货!你想要的资源这里都有!
- C# 特性(Attribute)入门教程
- C语言查看文件fp指针位置
- wireshark怎么抓包、wireshark抓包详细图文教程,简单介绍(及wireshark与wireshark legacy差别 )
- 类与对象的关系 java 1615134802
- 网络爬虫之Java基础篇(Ⅱ)
- 程序员求生指南:告别大小周,摆脱监视,直奔年终奖!
- 揭开源码的神秘面纱,让源码从此无处藏身
- L325 如何睡觉
- DOS 批处理高级教程精选合编20080331
- alpha 冲刺 —— 十分之一
- BZOJ2794: [Poi2012]Cloakroom
- 机器人出卢安娜飓风_LOL:卢安娜的飓风已经过时?哪些英雄还会出这件装备?...
- AE+VS+c#开发颜色符号系统之点值符号化(七)
- php连接sqlserver数据库服务器(或者称mssql数据库)的几种方法
- XB文件开发详解(上报证监会文件)_入门系列