摘要:
概述 1.wait、notify介绍,与锁的关系; 2.wait、notify、notifyAll的使用; 3.生产者消费者通过wait、notify来实现 wait、notify介绍,与锁的关系 1.wait、notify、notifyAll不属于Thread类,而是属于object类,也就是说每 阅读全文
摘要:
概述 1.wait、notify介绍,与锁的关系; 2.wait、notify、notifyAll的使用; 3.生产者消费者通过wait、notify来实现 wait、notify介绍,与锁的关系 1.wait、notify、notifyAll不属于Thread类,而是属于object类,也就是说每 阅读全文
摘要:
概要 1.start()与run()介绍 2.start()与run()源码查看 3.start()与run()测试 start()与run()介绍 1.通过我们在启动线程的时候使用的start,为什么不用run呢? 因为start()会新开一个线程来执行;而run只是一个普通想法,相当于当前线程来 阅读全文
摘要:
概要 1.Thread与Runnable的简单介绍 2.Thread与Runnable的区别 3.Thread与Runnable举例 Thread与Runnable的简介 Runnable就是一个接口,实现接口就需要实现run方法; Thread其实也是实现了Runnable接口,如源码所示,在继承 阅读全文
摘要:
最近招聘经常会问到别人i++和++i的区别,于是这里来总结一下,当然除了那个大家都知道的先加后加的区别; 在性能上的区别 1.i++,会创建一个tmp值来保存i值,所有会额外带来开销,而++i不会。当然这个性能区别不会特别明显,基本上可以忽略。 原子性比较 1.i++和++i是否都具有原子性? 答案 阅读全文
摘要:
Mysql优化主要通过执行计划,索引,sql语句,调整mysql内部配置 (http://blog.chinaunix.net/uid-11640640-id-3426908.html) 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 prof 阅读全文
摘要:
定义 注解通过 @interface 关键字进行定义。 应用 创建一个类 Test,然后在类定义的地方加上 @TestAnnotation 就可以用 TestAnnotation 注解这个类了。 你可以简单理解为将 TestAnnotation 这张标签贴到 Test 这个类上面。 不过,要想注解能 阅读全文
摘要:
先看一段代码的输出 结果为true。 为什么? 这里两个List均用到泛型,而泛型在编译的时候通过类型擦除已经没有了类型一说。所有两个class是相等的。 泛型是什么? 泛型一种较为准确的说法就是为了参数化类型,或者说可以将类型当做参数传递给一个类或者方法。 怎么理解参数化? 假设 Cache 能够 阅读全文
摘要:
前面一篇文字讲了CAS的ABA问题,这篇文章讲下CAS,貌似反了,应该先讲CAS再讲ABA,哈哈。。 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 ( 阅读全文
摘要:
接触并发编程少不了CAS,这里不讲CAS,在另一篇文章里面有写CAS,这里只关注CAS的ABA问题。 什么叫CAS的ABA问题? 因为CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没有发生变化 阅读全文
摘要:
在项目中经常会用到java线程池,但是别人问起线程池的原理,线程池的策略怎么实现的? 答得不太好,所以按照源码分析一番,首先看下最常用的线程池代码: 这个输出结果为,可以看到,没有线程池的超过10的,所以线程池执行只用了10个线程: pool-1-thread-1pool-1-thread-2poo 阅读全文
|