Java
文章平均质量分 93
Java开发记录
程序员小毛驴
一名游戏开发者
展开
-
【Java并发编程】深入分析AtomicInteger(二)
我是小毛驴,一个游戏人,我的梦想是世界和平。转载请注明出处:http://blog.csdn.net/liulongling/article/details/50547159一、什么是线程安全性 如果一个类可以安全地被多个线程使用,它就是线程安全的。你无法对此论述提出任何争议,但也无法从中得到更多有意义的帮助。那么我们如何辨别线程安全与非线程安全的类?我们甚至又该如何理解“安全”原创 2016-01-20 11:04:49 · 2688 阅读 · 1 评论 -
【Java并发编程】深入分析volatile(四)
在上一篇【Java并发编程】深入分析synchronized(三)中写到sychronized在多线程开发过程中具有原子性、可见性和有序性。这一章来说说volatile具有哪些特性。一、volatile简介 1.1 官方定义 Java语言规范第三版中对volatile的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线原创 2016-01-25 12:12:15 · 2045 阅读 · 0 评论 -
【Java并发编程】阻塞队列(五)
我是小毛驴,一个游戏人,我的梦想是世界和平。转载请注明出处:http://blog.csdn.net/liulongling/article/details/50593326 一、什么是阻塞队列 1.1 简介 阻塞队列(BlockingQueue)是用于进程间通信或同一进程内的线程间通信的组件。它的工作原理是当队列是空的时,线程试图从队列中获取元素的操原创 2016-01-27 12:15:17 · 2506 阅读 · 0 评论 -
【Java并发编程】深入分析synchronized(三)
写在前面 synchronized在网络游戏中应用还是比较多的,像购买商品、某场景NPC刷新、玩家之间建立婚姻关系、活动抢金币等等。如果这几个应用场景没有使用synchronized会有什么后果?购买商品:当多个玩家在同一时间购买某某商品时,如果没有加synchronized会使一个商品被多个玩家竞争,而竞争的结果是多个玩家购买到了同一商品。玩家之间建立婚姻关系:网络游戏中和现原创 2016-01-25 11:13:20 · 3007 阅读 · 0 评论 -
【Java基础提高】深入分析String(四)
我是小毛驴,一个游戏人,我的梦想是世界和平。转载请注明出处:http://blog.csdn.net/liulongling/article/details/50347279一、写在前面 本章将深入分析在Java中最常用的String类,主要分析以下几个部分:String类的二大特点:不可变性和不可继承关于String的使用和内存分配String、StringBu原创 2015-12-17 22:01:14 · 5086 阅读 · 2 评论 -
【Java基础提高】分析Java的回调机制(二)
一、回调函数 在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。所谓回调函数是指:在程序中,A类和B类分别有两个函数M1、M2,其中A类首先调用了B类的M2函数,然后B类通过接口回调A类M1函数,我们就将M1称之为回调函数。 二、异步回调 1.1 示例故事背景原创 2015-12-10 21:47:14 · 2089 阅读 · 1 评论 -
【Java基础提高】深入分析IntHashMap(三)
一、IntHashMap 1.1 准备 先从官网下载jar包:javasoft-collection.jar,解压后将jar包build到Java项目中. 1.2 IntHashMap类图 1.3 IntHashMap流程图 从上面类图可以看出IntHashMap和HashMap一样都是基于Map接口,在Map中最常用的2个原创 2015-12-10 21:51:39 · 5041 阅读 · 0 评论 -
【Java基础提高】HashTable源码分析(六)
一、HashTable 1.1 简介 HashTable是一个数组和链表的结合体(在数据结构称“链表散列“)。大家都知道数组的查询效率高,移除效率低。而链表恰恰相反,所以将2者结合在一起来使用互相弥补了双方的缺点。 1.2 类图 1.3 源码分析 1.3.1 属性与链表节点类/*原创 2015-12-19 23:15:36 · 2268 阅读 · 0 评论 -
【Java基础提高】深入分析final关键字(一)
Java的关键字final通常是指被它修饰的数据是不能被改变的,不想改变可能出于两种理由:设计或效率。以下是本文主要大纲:final数据的使用final参数的使用final方法的使用final类不能被继承 一、final数据 1.1 final修饰变量 修饰的变量必须是基本数据类型:告知编译器这一块数据是不变的,这样可以在执行计算时,减少一些运行时的负担原创 2015-12-06 22:00:20 · 5093 阅读 · 2 评论 -
【Java基础提高】说说ArrayList(五)
一、ArrayList 1.1简介 ArrayList是一个动态数组,它提供了动态的增加和减少元素。在使用时需要知道和注意以下几点:在添加元素时,数组会随着新添加的元素逐渐增长。当元素数量达到数组容量时会带来数据向新数组里的拷贝,因此,在已知数组大小的情况下在其构造函数中指定ArrayList大小。或者在添加大量元素前,使用ensureCapacity()方法来原创 2015-12-19 20:01:54 · 1798 阅读 · 0 评论 -
【Java并发编程】深入分析ConcurrentHashMap(九)
本章是提高教程可能对于刚入门同学来说会有些难度,读懂本章你需要了解以下知识点:一、 【Java基础提高】深入分析final关键字(一)二、 【Java并发编程】深入分析volatile(四)三、 【Java基础提高】HashTable源码分析(六)一、Concurrent源码分析 ConcurrentHashMap是由Segment(桶)、HashEntry(节点)2大数据结构组成。如下图所示:原创 2016-02-22 16:35:31 · 5314 阅读 · 4 评论 -
【Java并发编程】深入分析ThreadLocal(八)
我们在使用一个类时,首先要知道它能做什么,然后再去深入分析它的工作原理。ThreadLocal如果从名字上来看像是“本地线程"的意思,其实ThreadLocal并不是一个线程,而是线程的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。在Java多线程面试题原创 2016-01-29 15:56:58 · 5379 阅读 · 1 评论 -
【Java并发编程】深入分析Thread(七)
一、线程 1.1什么是线程? 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有原创 2016-01-28 12:05:11 · 6192 阅读 · 0 评论 -
【Java并发编程】LinkedBlockingQueue的使用(六)
我是小毛驴,一个游戏人,我的梦想是世界和平。原文地址:http://blog.csdn.net/liulongling/article/details/50596624 一、LinkedBlockingQueue 1.1 简介 LinkedBlockingQueue是一个由链表结构组成的有界阻塞队列,此队列是FIFO(先进先出)的顺序来访问的,它由队尾插入后再从队头取原创 2016-01-27 21:01:30 · 10732 阅读 · 6 评论 -
【Java并发编程】深入分析AtomicInteger(二)
什么是线程安全性 如果一个类可以安全地被多个线程使用,它就是线程安全的。你无法对此论述提出任何争议,但也无法从中得到更多有意义的帮助。那么我们如何辨别线程安全与非线程安全的类?我们甚至又该如何理解“安全”呢? 任何一个合理的“线程安全性”定义,其关键在于“正确性”的概念。在<>书中作者是这样定义的:一个类是是线程安全的,是指在被多个线程访问时,类可以持续进行正确的行为。 提示...原创 2016-07-20 08:30:38 · 411 阅读 · 0 评论