自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java同步容器与并发容器

Java容器Java提供了很多容器类,方便用户使用。关键接口图如下(图片来源自The Java™ Tutorials), Collection——集合框架结构的根节点。Java并没有提供该接口的具体实现,但是提供了Collection子接口,比如Set,List的具体实现。本篇博客大纲,1. 介绍java 容器类2. 介绍Java同步容器类,并介绍其可能出现的问题2. 简单介绍下Java并发容器

2016-08-29 18:15:03 861

原创 Java并发编程番外篇(三)volatile变量、happens-before与内存一致性错误

Java并发编程番外篇(三)volatile变量、happens-before与内存一致性错误volatile变量volatile是Java的关键词,我们可以用它来修饰变量或者方法。为什么要使用volatilevolatile的典型用法是,当多个线程共享变量,且我们要避免由于内存缓冲变量导致的内存一致性(Memory Consistency Errors)错误时。考虑以下的生产者消费者例子,在一个时

2016-08-22 23:08:48 1657 1

原创 Java并发编程番外篇(二)happens-before关系

在Java 并发编程(三)同步中,提到了内存一致性错误,而避免内存一致性错误的关键就是了解happens-before关系。那么什么是happens-before关系呢?如何判断两个操作是否存在happends-before关系呢?本文将来介绍这两个方面。1. happens-before关系Wikipedia, Happened-before是这样定义的: In computer scienc

2016-08-21 23:01:48 2921 2

原创 Android多进程使用及其带来的问题

本文介绍Android程序如何使用多线程,为什么要使用多进程,并说明了使用多进程可能会出现的一些问题。1. Android程序如何使用多进程根据Processes and Threads,默认情况下,一个Android程序的所有组件都是在一个进程中执行的,该进程的名字就是程序的包名。同时,Android也允许开发者将程序的一些组件在其他进程中执行。四大组件均支持android:process属性,我

2016-08-21 16:46:15 5221

翻译 Java并发编程(七)高级别并发对象

7. 高级别并发对象到目前为止,本课程介绍了一些Java平台初学者必须的低级别API。在本节,我们将要介绍Java平台5.0引入的一些高级别并发特性。包括Lock,Executors,并发集合,原子变量和ThreadLocalRandom等知识。

2016-08-20 15:25:53 2140

翻译 Java并发编程(六)不可改变对象

6. 不可改变对象如果一个对象在创建后不可改变,那么就称之为不可改变对象。基于不可变对象被广泛接受为创建简单、可靠代码的有效策略。不可变对象在并发程序中显得尤为重要。由于它们不能改变,所以他们不会在线程干扰中出现错误,并且不会出现非一致性状态。开发者并不太原因使用不可变对象,他们担心创建对象的开销比更新一个现有对象的开销大。创建对象的开销经常被夸大,并且可以被不可变对象带来的效率弥补。这包括由于垃圾

2016-08-16 10:06:02 2901

翻译 Java并发编程(五)保护块

5. 保护块线程通常需要协调任务。最常用的协调方法是保护块(guarded block)。这样一个块以一个条件开始,如果该条件为真,则该块的代码得以执行。这样做需要遵循一些步骤。假设,guardedJoy是一个方法,该方法不会执行直到另一个线程设置joy变量的值。理论上,这样的方法可以简单地循环直到条件符合。然而,循环是浪费资源的,因为当等待的时候,它也继续执行。public void guarde

2016-08-15 21:28:28 537

翻译 Java并发编程(四)活跃度

4. 活跃度一个并发应用及时执行的能力称作活跃度。本节介绍最常见的活跃度问题,死锁,然后继续简单介绍两种其他的活跃度问题,饥饿和活锁。4.1 死锁死锁介绍了两个或者多个线程永远阻塞、彼此等待的情形。这是一个例子, Alphonse和Gaston是朋友,并且彼此很有礼貌。一个礼貌的严格规定是,当你鞠躬的时候,你必须保持一直鞠躬,直到你朋友结束鞠躬。然而,这却没有考虑两个朋友可能在相同时刻都向对方鞠躬

2016-08-15 12:07:38 1141

翻译 Java并发编程(三)同步

Java并发编程(三)同步3. 同步线程主要通过共享内存(成员变量)来进行通信。这种形式的交流很有效率,但是可能会导致两种错误:线程接口和内存一致性错误。预防这些错误的方式就是同步。本文介绍线程干扰、内存一致性错误、同步化方法、隐式锁和同步、原子操作等内容。

2016-08-15 10:21:04 617

原创 Java并发编程番外篇(一)如何结束一个线程

本篇博客介绍下如何结束一个线程。在Java 的设计中,当一个线程的run方法中代码执行结束后,该线程就自动结束了。但是,在我们的实际开发过程中,可能会需要手动的结束一个线程,此时我们应该怎么安全地结束一个线程呢?1. stop方法根据Java的官方文档,Java Thread,该方法已被弃用。文档给出的解释是,该方法不安全,使用stop方法结束一个线程会导致该线程释放所有占有的锁。如果这些锁保护的一

2016-08-12 08:37:00 1949

翻译 Java并发编程(二)多线程编程

在上一节,我们介绍了进程与线程的概念,接下来介绍如何使用多线程(暂不介绍多进程)。Thread对象每个线程都对应一个Thread实例,存在两种策略使用Thread类来创建并发程序。直接进行线程的创建和管理,也就是当需要开启一个异步任务时,实例化一个Thread对象。抽象线程管理,将执行任务交给执行器。本节介绍如何使用Thread类。定义和执行新的线程在创建新线程的时候,我们需要指定该线程运行的

2016-08-10 17:38:38 651

翻译 Java 并发编程(一)进程与线程

本篇博客介绍下进程与线程的区别。 在现有的并发编程中,有两个重要的执行单元:进程与线程。在Java变成语言中,与并发编程相关的通常是线程。然而,进程也同样重要。一个计算机系统通常会有许多的活动进程和线程。即使当系统只有一个执行内核时(也就是在一个给定的时间,只有一个线程在运行),该系统也支持多个进程与线程。单一内核的执行时间被进程和线程共享,该特性我们称之为时间片(time slicing)。计算

2016-08-10 16:17:41 395

Understanding the Linux Kernel 3rd Edition

英文版,详细介绍了Linux内核。经典之作,值得收藏。

2015-11-16

Android动态加载之DexClassLoader学习

DexClassLoader学习源码,使用时,请删除Lib.Java文件,否则会出现loadClass错误。

2015-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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