PLock:简单易用并且高效的 Android 跨进程锁
发表于2018-04-29 23:27:25
摘要: 原标题:PLock:简单易用并且高效的 Android 跨进程锁 PLock is a simple and efficient cross-process lock, also supports read-write lock. If you like this, welcome to start/fork it or fol

    原标题:PLock:简单易用并且高效的 Android 跨进程锁

    PLock is a simple and efficient cross-process lock, also supports read-write lock.

License 

  If you like this, welcome to start/fork it or follow me.

  PLock is an Android library, it makes Android to support cross-process lock, not only that, it can also be transfer to support Java project.

  It is easy to use and runs efficiently.

  PLock can acquire locks in either blocking(lock) or non-blocking(tryLock) mode. In blocking mode, it will block the current thread in the process if the lock you acquire is already hold by another process, that only returns false in non-blocking mode.

  PLock also supports read-write lock cross process,If one process holds a read lock, the other process can also acquire a read lock successfully,and cannot acquire a write lock. If one process holds a write lock, the other process cannot acquire any read or write lock.

  You can also use PLock as a file lock, In fact, it is based on file locks that using fcntl

  acquire read lock acquire write lock
no lock allow allow
one or more read locks allow disallow
one write lock disallow disallow

  Getting started

  In your build.gradle:

  allprojects {

  repositories {

  maven { url 'https://jitpack.io' }

  }

  }

  dependencies {

  implementation 'com.github.pqpo:PLock:{last-version}'

  }

  Usage

  Step 1. get a default PLock object, and you can also create one by yourself.

  Step 2. acquire locks.

  Step 3. unlock.

  Step 4. release if necessary.

  For example:

  PLock pLock = PLock.getDefault();

  // OR you can also use it as a file lock:

  // PLock pLock = new PLock(file);

  pLock.lock();

  try {

  // to do something...

  } catch (Exception e) {

  // errors

  } final {

  pLock.unlock();

  }

  // in non-blocking mode

  if(pLock.tryLock()) {

  try {

  // to do something...

  } catch (Exception e) {

  // errors

  } final {

  pLock.unlock();

  }

  }

  // non-block read lock

  if(pLock.tryReadLock()) {

  // to do something...

  }

  // non-block write lock

  if(pLock.tryWriteLock()) {

  // to do something...

  }

  // etc.

  // pLock.release();

  Play with samples, have fun!

  You can clone this repository, then run 'debug' build variant and 'second' build variant, after that you can see two applications running on your phone which named PLock-FirstProcess and PLock-SecondProcess.

  Or download PLock-FirstProcess and PLock-SecondProcess.

PLock-first-process PLock-second-process

投稿:lukejiwang@163.com
Copyright © 2002-2020 鹿科技