Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java线程同步之重入锁

Java线程同步除了原子变量,synchronized之外还可以使用重入锁来完成线程的同步。重入锁 使用java.util.concurrent.locks下面的Locks类。相关阅读:Java Hashtable多线程操作遍历问题 http://www.linuxidc.com/Linux/2013-01/78574.htmJava多线程顺序执行 http://www.linuxidc.com/Linux/2012-07/65033.htmJava多线程问题之同步器CyclicBarrier http://www.linuxidc.com/Linux/2012-07/64593.htmJava多线程之wait()和notify() http://www.linuxidc.com/Linux/2012-03/57067.htmJava多线程之synchronized http://www.linuxidc.com/Linux/2012-03/57068.htmJava多线程之并发锁 http://www.linuxidc.com/Linux/2012-03/57069.htm
 
下面演示Locks 的使用。代码如下:package com.Android.test;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; /*
 重入锁的使用方式如下:
  Lock l = ...;
   l.lock();
   try {
       // access the resource protected by this lock
   } finally {
       l.unlock();
   }
  */public class ReentrantLockDemo implements Runnable {
 private int number = 0;
 // 定义一个重入锁
 private Lock lock = new ReentrantLock();
 @Override
 public void run() {
  // TODO Auto-generated method stub
  lock.lock();
  try {
   for (int i = 0; i < 5; i++) {
    try {
     Thread.sleep(1000);
    } catch (InterruptedException e) {
     // TODO: handle exception
     e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName() + ":" + number++);
   }
  } finally{
   lock.unlock();
  }
 }
 
 public static void main(String [] args){
  ReentrantLockDemo run = new ReentrantLockDemo();
  Thread thread1 = new Thread(run);
  Thread thread2 = new Thread(run);
 
  thread1.start();
  thread2.start();
 }
}运行结果如下:
 
Thread-0:0
 Thread-0:1
 Thread-0:2
 Thread-0:3
 Thread-0:4
 Thread-1:5
 Thread-1:6
 Thread-1:7
 Thread-1:8
 Thread-1:9本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-05/101044.htm