- 浏览: 355082 次
- 性别:
- 来自: 沈阳
最新评论
-
sanrenxing_1:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
极光推送(JPUSH)--- 消息推送 -
QuarterLifeForJava:
如果带有中文路径的话要写为:
URLDecoder.decod ...
获取类根路径及jar包路径 -
whyxy007:
请问楼主放上去的这张图就是最后需要安装的所有的包吗?还是说需要 ...
cordova 开发环境搭建
文章列表
使用synchronized 实现生产者和消费者,发现出现死锁,代码如下:
(wait notify nofityAll 方法,只能在监控器对象(锁对象)上调用)。
public class BlockingListBySync<E> implements BlockingList<E> {
static final int MAXIMUM_CAPACITY = 1 << 30;
int tableSizeFor(int cap) {
int n = cap - 1;
n ...
Redis 内存淘汰机制(转)
- 博客分类:
- redis
转自:http://www.cnblogs.com/changbosha/p/5849982.html
Redis内存淘汰指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况,那么Redis为什么要有这种功能?这就是我们需要探究的设计初衷。Redis最常见的两种应用场景为缓存和持久存储,首先要明确的一个问题是内存淘汰策略更适合于那种场景?是持久存储还是缓存?
内存的淘汰机制的初衷是为了更好地使用内存,用一定的缓存miss来换取内存的使用效率。
作为Redis用户,我如何使用Redis提供的这个特性呢?看看下面配置
# maxmemory ...
jstack 进程号,打出线程运行情况:
java.lang.Thread.State: BLOCKED (on object monitor)--说明线程阻塞的
BLOCKED 是由于synchronized 锁引起的。
- waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed)
说明阻塞是等待这个锁。
那么谁持有这个锁呢?
"pool-1-thread-8" ...
转自:http://www.cnblogs.com/dennyzhangdd/p/6734638.html
目录
1.启蒙知识预热:CAS原理+JVM对象头内存存储结构
2.JVM中synchronized锁实现原理(优化)
3.从C++源码看synchronized
4.总结
很多人一提到锁,自然第一个想到了synchronized,但一直不懂源码实现,现特地追踪到C++层来剥开synchronized的面纱。
网上的很多描述大都不全,让人看了不够爽,看完本章,你将彻底了解synchronized的核心原理。
一、启蒙知识预热
开启本文之前先介绍2 ...
synchronized锁分析(转)
- 博客分类:
- JAVA-多线程
转自:http://blog.csdn.net/xad707348125/article/details/46956911
一、 引言
JAVA是一门极易入门的语言,这一点尤其表现在JAVA中对象锁的使用和多线程编程上。所谓对象锁,就是可以直接在JAVA的任意Object加锁(synchronized),也可以 ...
线程安全问题:多线程对有状态可变的共享变量的修改,导至的问题。
需要使用锁来解决线程安全问题。
锁: 线程互斥性,内存可见性。
线程互斥性:保证了对有状态可变的共享变量的顺序访问。
只有线程获得了锁才能对变量访问,线程释放锁之后,其它线程才能获得锁。
这是线程获得锁-》读写变量--》释放锁--下一个线程 --获得锁-》读写变量--》的过程 。
内存可见性: 进入获得锁后,变量从主内存读取,而不是缓存中读取,锁释放前,修改的变量写回主内存。
下一条线程获得锁后,从主内存中取得的变量的有效数据。
...
JMM——volatile的内存语义(转)
- 博客分类:
- JVM
转自:http://blog.csdn.net/hqq2023623/article/details/51011434
volatile
理解volatile特性的一个好方法:
把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步
锁的happens-before规则保证释放锁和获取锁的两个线程之间的内存可见性,
CPU load过高产生的原因及排查(转)
- 博客分类:
- JVM
转自:http://m.blog.csdn.net/canot/article/details/78079085
什么是cpu load 值
top命令中显示的load average即为最近1分钟、5分钟和15分钟的系统平均负载。
系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
它没有在等待I/O操作的结果
它没有主动进入等待状态(也就是没有调用’wait’)
没有被停止(例如:等待终止)
在Linux中,进程分为三种状态,一种是阻塞的进程blocked pr ...
java 线程 状态(转)
- 博客分类:
- JAVA-多线程
转自:http://www.cnblogs.com/everSeeker/p/5487093.html#3798351
一、线程的状态
Java中,线程的状态有以下6类:NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED。各状态之间的关系可用下图表示:
二、常用方法介绍
1、thread.start()和thread.run()的区别
1 public static void main(String[] args) {
2 Thread t = new Thread();
...
JVM Crash原因分析及相关资料(转)
- 博客分类:
- JVM
JVM Crash原因分析及相关资料(转)
转自:http://seanhe.iteye.com/blog/905997
去年生产环境突然有一天连续发生几台服务器JVM Crash的情况。出现这种情况的时候JVM留下的error log基本相同
Java代码 收藏代码
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00002b28192a24f0, pid=28485, tid=1088477504
#
...
JVM致命错误-退出
- 博客分类:
- 笔记
jvm 致命错误退出,生成hs_err_pid.log文件中:
--------------- T H R E A D ---------------
Current thread (0x00007f47400d1800): JavaThread "C2 CompilerThread3" daemon [_thread_in_native, id=49108, stack(0x00007f47262c2000,0x00007f47263c3000)]
Stack: [0x00007f4 ...
一、接口定义
1.区分业务级异常及系统级异常。
系统级异常:抛出异常
业务级异常: 返回不同的业务代码
----这样根据异常可以区别是系统级的还是业务级的
a):对于http接口,返回如 :{"sysCode":0,sysMessage:"成功",busiCode:0,busiMessage:"",result:{}}
sysCode==0 为系统级成功,其它值为系统级失败,系统 ...
转自:https://my.oschina.net/xionghui/blog/498785?p=1
当jvm出现致命错误时,会生成一个错误文件 hs_err_pid<pid>.log,其中包括了导致jvm crash的重要信息,可以通过分析该文件定位到导致crash的根源,从而改善以保证系统稳定。当出现crash时,该文件默认会生成到工作目录下,然而可以通过jvm参数指定生成路径(JDK6中引入):
-XX:ErrorFile=./hs_err_pid<pid>.log
该文件包含如下几类关键信息:
日志头文件
导致crash的线程信息
...
转自:http://www.infoq.com/cn/articles/java-memory-model-5
锁的释放-获取建立的happens before 关系
锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。
下面是锁释放-获取的示例代码:
class MonitorExample {
int a = 0;
public synchronized void writer() { //1
a++; //2
...