Java线程:新特征 锁(上)
Java线程:新特征-锁(上)
在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。
Condition
Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。
Lock
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。
ReadWriteLock
ReadWriteLock 维护了一对相关的锁定,一个用于只读操作,另一个用于写入操作。
有关锁的介绍,API文档解说很多,看得很烦,还是看个例子再看文档比较容易理解。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* Java线程:锁
*
* @author leizhimin 2009-11-5 10:57:29
*/
public class Test {
public static void main(String[] args) {
//创建并发访问的账户
MyCount myCount = new MyCount("95599200901215522", 10000);
//创建一个锁对象
Lock lock = new ReentrantLock();
//创建一个线程池
ExecutorService pool = Executors.newCachedThreadPool();
//创建一些并发访问用户,一个信用卡,存的存,取的取,好热闹啊
相关文档:
今天把以前写的java代码拿出来,发现出了好多错误。调了半天,发现是版本的问题,郁闷!
可能之前我写代码的时候用的是JDK1.5,今天从网上下载JDK1.6,没成功。就草草下载了JDK1.5,结果总是提示“could not find the main class. program will exit”。我就到
window-》preference-》java-》compiler把当前的版 ......
打开eclipse,发现eclipse宕掉了,并且出现这样的提示:关于Initializing java tooling(1%)...
重启了几次之后发现问题仍然存在,因而狂搜了一把,终于找到正确的解决办法,如下:
找到eclipse目录,编辑eclipse.ini文件,在-vmargs参数之前添加上如下参数(一定要像下面这样写成两行),然后重启就ok了
-vm
C:\Progr ......
Java线程:线程的同步与锁
一、同步问题提出
线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。
例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。
public class Foo {
private int x = 100;
......
Java线程:线程的交互
SCJP5学习笔记
线程交互是比较复杂的问题,SCJP要求不很基础:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。
一、线程交互的基础知识
SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习:
void notify()
......
Java线程:线程的调度-让步
线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。
线程的让步使用Thread.yield()方法,yield() 为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。
/**
* Java线程:线程的调度-让步
*
......