volatile变量具有synchronized的可见性特性,但是不具备原子特性,即多线程环境中,使用 volatile 关键字的变量仅可以保证不同线程读取变量时,可以读到最新修改的变量值,但是修改变量值时,却不能保证线程安全(可能存在写值覆盖现象)。以下测试代码,展示了使用volatile关键.....
分类:
编程语言 时间:
2014-11-20 11:37:55
阅读次数:
216
前言:最近在学习Java多线程,看到ImportNew网上有网友翻译的一篇文章《阻塞队列实现生产者消费者模式》。在文中,使用的是Java的concurrent包中的阻塞队列来实现。在看完后,自行实现阻塞队列。(一)准备 在多线程中,生产者-消费者问题是一个经典的多线程同步问题。简单来说就是有两种线....
分类:
编程语言 时间:
2014-11-20 01:18:38
阅读次数:
266
多线程操作同一个对象时,容易引发线程安全问题。为了解决线程安全问题,Java多线程引入了同步监视器。 同步代码块 同步代码块语法格式如下: synchronized(obj){ //此处的代码即为同步代码块
} 上面语法格式中synchronized后面括号的obj就是同步监视器,上面代码的含义是:...
分类:
编程语言 时间:
2014-11-19 23:38:18
阅读次数:
318
前言:昨天尝试用Java自行实现生产者消费者问题(Producer-Consumer Problem),在coding时,使用到了Condition的await和signalAll方法,然后顺便想起了wait和notify,在开发中遇到了一个问题:wait、notify等阻塞和恢复的时机分别是什么?...
分类:
编程语言 时间:
2014-11-19 18:19:32
阅读次数:
170
多线程的同步1. 锁对象。 应用场景:当某个数据可能被其他线程修改时,给涉及到数据的方法上锁,保证同一时刻只有拥有这个锁的线程能访问该数据,其他要调用这个方法的线程被阻塞。注意:必须是不同线程访问同一个对象的时候,其中的锁对象也是同一个。 应用方法: public class Bank{ ...
分类:
编程语言 时间:
2014-11-19 07:12:30
阅读次数:
223
import?java.util.ArrayList;
import?java.util.List;
import?java.util.concurrent.Callable;
import?java.util.concurrent.ExecutionException;
import?java.util.concurrent.Future;
import?java.util.c...
分类:
编程语言 时间:
2014-11-18 13:37:00
阅读次数:
354
Callable、Future 简单应用 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。现在Java终于有可返回值的任务(也可以叫做线程)了。可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnabl...
分类:
其他好文 时间:
2014-11-17 19:13:32
阅读次数:
234
Java多线程的利用wiat/notify交替执行...
分类:
编程语言 时间:
2014-11-17 17:50:48
阅读次数:
152
1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。 2)在Java中Lock接口比synchronized块的...
分类:
编程语言 时间:
2014-11-17 17:31:47
阅读次数:
178
之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对的Thread和Runnable进行了解。本章内容包括: Thread和Runnable的简介 Thread和Runnable的异同点 T...
分类:
编程语言 时间:
2014-11-16 15:52:50
阅读次数:
243