Java线程同步之重入锁


Java线程同步除了原子变量,synchronized之外还可以使用重入锁来完成线程的同步。重入锁 使用java.util.concurrent.locks下面的Locks类。

Java Hashtable多线程操作遍历问题

Java多线程顺序执行

Java多线程问题之同步器CyclicBarrier

Java多线程之wait()和notify()

Java多线程之synchronized

Java多线程之并发锁


 
下面演示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

本文永久更新链接地址:

相关内容

    暂无相关文章