`
文章列表
    线程状态: 
  使用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 ...
转自: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 ...
转自:http://blog.csdn.net/xad707348125/article/details/46956911   一、   引言 JAVA是一门极易入门的语言,这一点尤其表现在JAVA中对象锁的使用和多线程编程上。所谓对象锁,就是可以直接在JAVA的任意Object加锁(synchronized),也可以 ...
线程安全问题:多线程对有状态可变的共享变量的修改,导至的问题。 需要使用锁来解决线程安全问题。   锁: 线程互斥性,内存可见性。         线程互斥性:保证了对有状态可变的共享变量的顺序访问。                  只有线程获得了锁才能对变量访问,线程释放锁之后,其它线程才能获得锁。 这是线程获得锁-》读写变量--》释放锁--下一个线程  --获得锁-》读写变量--》的过程 。 内存可见性: 进入获得锁后,变量从主内存读取,而不是缓存中读取,锁释放前,修改的变量写回主内存。             下一条线程获得锁后,从主内存中取得的变量的有效数据。   ...
转自:http://blog.csdn.net/hqq2023623/article/details/51011434   volatile 理解volatile特性的一个好方法: 把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步   锁的happens-before规则保证释放锁和获取锁的两个线程之间的内存可见性,
转自:http://m.blog.csdn.net/canot/article/details/78079085   什么是cpu load 值 top命令中显示的load average即为最近1分钟、5分钟和15分钟的系统平均负载。  系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中: 它没有在等待I/O操作的结果 它没有主动进入等待状态(也就是没有调用’wait’) 没有被停止(例如:等待终止) 在Linux中,进程分为三种状态,一种是阻塞的进程blocked pr ...
转自: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原因分析及相关资料(转) 转自: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 ...
Global site tag (gtag.js) - Google Analytics