1. sleep()和wait()的区分 (1)这两个方法来自不同的类分别是,sleep来自Thread类,wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep (2)最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法. sleep不出让系统资源,一直占用着锁:wait是进入阻塞状态,出让系统资源,其他线程可以占用C…
1. Syncronized与ReentrantLock Synchronized比ReentrantLock进java标准早,因此一开始大家都是用它.相当于Java提供了一种封装的互斥锁机制,对于用户来说,声明成synchronized就可以拿到锁的能力,而不用管具体是怎么加锁解锁的 使用简便也是双刃剑,synchronized的粒度较粗,可控性较差.比如无法中断一个正在等候获得锁的线程,也无法通过投票得到锁等等.很多场景不是一个互斥锁就能搞定的. 所以Java搞了个java.util.con…
java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读懂的信息表达式,一般来说大部分的常见类都会重写这个方法.比如Collection会重写的该方法就会在集合前后加上[ ]中间的元素中间会加上.但是如果没有重写的话Object的默认的toString方法是返回:getClass().getName() + '@' + Integer.toHexStri…
CPU是一台电脑的灵魂,决定电脑整体性能.现在的主流CPU都是多核的,有的运用了多线程技术(Hyper-threading,简称HT).多核可能还容易理解些,相信不少玩家都能说出个所以然.但超线程是个什么东西,究竟有什么实际意义,一个支持超线程的CPU开启和关闭HT有什么不同,能解释清楚的人可能就不太多了.为此,我特地开此贴给大家介绍一下双核.超线程技术.此贴结合我平时自己工作中的积累.同厂商(英特尔)的交流经验.以及私下里作为一个DIY玩家的认识,力争做到最权威.最准确,同时保证通俗易懂,希望…
public class WaitTest { public void testWait(){ System.out.println("Start-----"); try { wait(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("End-------"); } public static void main(String[] args) {…
CPU架构要谈超线程和多核,就不得不谈CPU的架构和逻辑.无关的技术细节太多,这里略去.我们重点谈一下CPU中两个相关的模块:1)Processing Unit(运算处理单元),简称PU2)Architectual State(架构状态单元),简称ASPU一般就是执行运算,比如算数运算加减乘除.AS执行一些逻辑和调度方面的操作,比如控制内存访问等. 单核CPU(先从简单的谈起)一般一块传统意义的CPU上会有一个PU.一个AS. 比喻:一个小饭馆(单核CPU),夫妻老婆店,老板兼大厨厨房炒菜,老板…
我们知道,Android中数据存储技术由于如下几种 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 今天,我们来谈谈SharedPreferences,它处理的就是一个key-value(键值对).SharedPreferences常被用来存储一些轻量级的数据. public interface SharedPreferences; Interface for accessin…
我们知道,如果采用官方的ListView,实现的功能在很多时候,并不能满足自己的业务需求,比如在设计到复杂的列表的时候,这一节,我们就开始动手自己实现自定义的ListView. 在上一节中,我们采用了固定的ListView中的数据集,我们对其进行改造:我们重新设置一个ListView的一个模板 template_sort.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a…
详解Java GC的工作原理+Minor GC.FullGC 引用地址:http://www.blogjava.net/ldwblog/archive/2013/07/24/401919.html JVM内存管理和JVM垃圾回收 JVM内存组成结构 JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制.堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Su…
这篇文章主要介绍了Go语言的GOPATH与工作目录详解,本文详细讲解了GOPATH设置.应用目录结构.编译应用等内容,需要的朋友可以参考下 GOPATH设置 go 命令依赖一个重要的环境变量:$GOPATH1 (注:这个不是Go安装目录.下面以笔者的工作目录为说明,请替换自己机器上的工作目录.) 在类似 Unix 环境大概这样设置: 复制代码 代码如下:     export GOPATH=/home/apple/mygo 为了方便,应该把新建以上文件夹,并且把以上一行加入到 .bashrc 或…