刘望舒的专栏

他强由他强,清风拂山岗;他横由他横,明月照大江;他自狠来他自恶,我自一口真气足。...

Java虚拟机(四)垃圾收集算法

在本系列上一篇文章中我讲到了垃圾标记算法,垃圾被标记后,GC就会对垃圾进行收集,垃圾收集有很多种算法,这篇文章就来介绍常用的垃圾收集算法的思想。

2017-05-23 00:55:35

阅读数:2193

评论数:3

Java虚拟机(三)垃圾标记算法与Java对象的生命周期

这一节我们来简单的介绍垃圾收集器,并学习垃圾标记的算法:引用计数算法和根搜索算法,为了更好的理解根搜索算法,会在文章的最后介绍Java对象在虚拟机中的生命周期。

2017-05-16 11:36:04

阅读数:2159

评论数:2

Java虚拟机(二)对象的创建与OOP-Klass模型

在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案。

2017-05-04 11:43:18

阅读数:3347

评论数:1

Java虚拟机(一)结构原理与运行时数据区域

本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域。

2017-04-21 13:10:38

阅读数:3599

评论数:2

Java并发编程(七)ConcurrentLinkedQueue的实现原理和源码分析

我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本节我们就来研究下ConcurrentLinkedQueue...

2016-08-14 17:21:24

阅读数:6727

评论数:0

Java并发编程(六)阻塞队列

在Android多线程(一)线程池这篇文章时,当我们要创建ThreadPoolExecutor的时候需要传进来一个类型为BlockingQueue的参数,它就是阻塞队列,在这一篇文章里我们会介绍阻塞队列的定义、种类、实现原理以及应用。

2016-07-31 11:09:27

阅读数:12062

评论数:2

Java并发编程(五)ConcurrentHashMap的实现原理和源码分析

在Java1.5中,并发编程大师Doug Lea给我们带来了concurrent包,而该包中提供的ConcurrentHashMap是线程安全并且高效的HashMap,本节我们就来研究下ConcurrentHashMap是如何保证线程安全的同时又能高效的操作。

2016-07-21 11:12:28

阅读数:8205

评论数:3

Java并发编程(四)Java内存模型

此前我们讲到了线程、同步以及volatile关键字,对于Java的并发编程我们有必要了解下Java的内存模型,因为Java线程之间的通信对于工程师来言是完全透明的,内存可见性问题很容易使工程师们觉得困惑,这篇文章我们来主要的讲下Java内存模型的相关概念。

2016-05-29 10:39:11

阅读数:6559

评论数:0

Java并发编程(三)volatile域

有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大,volatile关键字为实例域的同步访问提供了免锁的机制。如果声明一个域为volatile,那么编译器和虚拟机就知道该域是可能被另一个线程并发更新的。再讲到volatile关键字之前我们需要了解一下内存模型的相关概念以及并发编程中的三...

2016-02-13 17:48:32

阅读数:5682

评论数:2

Java并发编程(二)同步

如果你的java基础较弱,或者不大了解java多线程请先看这篇文章java多线程(一)线程定义、状态和属性 同步一直是java多线程的难点,在我们做android开发时也很少应用,但这并不是我们不熟悉同步的理由。希望这篇文章能使更多的人能够了解并且应用java的同步。 在多线程的应用总,两个或...

2015-12-15 14:04:20

阅读数:2606

评论数:6

Java并发编程(一)线程定义、状态和属性

一 、线程和进程 1. 什么是线程和进程的区别: 线程是指程序在执行过程中,能够执行程序代码的一个执行单元。在java语言中,线程有四种状态:运行 、就绪、挂起和结束。 进程是指一段正在执行的程序。而线程有事也被成为轻量级的进程,他得程序执行的最小单元,一个进程可以拥有多个线程,各个线程...

2015-10-05 15:30:31

阅读数:6741

评论数:0

java生产者消费者问题实现

/**   *经典生产者与消费者问题:生产者不断的往仓库中存放产品,消费者从仓库中消费产品。   *其中生产者和消费者都可以有若干个。仓库容量有限,库满时不能存放,库空时不能取产品    */      public class ProducersAndConsumers {       publ...

2013-08-07 20:58:46

阅读数:1417

评论数:0

Java nio Socket非阻塞模式

NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有 事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册过的socketchannel,然后,我们从...

2012-11-18 16:51:47

阅读数:4161

评论数:0

Object,byte[],ByteBuffer之间的转换

package cn.vicky.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.I...

2012-11-18 16:31:42

阅读数:10454

评论数:0

Java实现同步机制(生产者消费者)

Java实现线程的同步,可以通过synchronized,wait(), notitfy(), notifyAll();假设一个线程(生产者)生产产品,一个线程(消费者)消费产品,其访问的资源时间都是随机的,这样就是生产者必须得产品(资源)消费完成之后才可以生产,而消费者必须在产品有的时候才可以消...

2012-09-23 12:33:10

阅读数:2254

评论数:0

java同步机制 synchronized

JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量...

2012-09-23 11:21:37

阅读数:1630

评论数:0

格式化字符串长度,超出部分显示省略号,区分汉字跟字母

由于android软件的显示控件上要求长度超过一定的数值就截取并加省略号,所以写了这个方法: package com.eoeandroid.demo.testcode; import android.app.Activity; import android.graphic...

2011-07-01 13:06:00

阅读数:2777

评论数:0

同步Synchronized方法与代码块

<br />打个比方:一个object就像一个大房子,大门永远打开。房子里有很多房间(也就是方法)。这些房间有上锁的(synchronized方法),和不上 锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进...

2011-06-02 18:20:00

阅读数:1464

评论数:0

java之static使用详解

<br />请先看下面这段程序:<br /> public class Hello{<br /> public static void main(String[] args){ //(1)<br /> System.out.println(&q...

2011-06-01 21:08:00

阅读数:1490

评论数:0

java中的length属性和length()方法和size()方法的区别

<br />1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. <br />1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length...

2011-05-31 21:55:00

阅读数:2884

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭