• Stars
    star
    105
  • Rank 328,196 (Top 7 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔐PLock is a simple and efficient cross-process lock, also support read-write lock. (简单高效的跨进程锁,支持读写锁分离)

PLock

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

License

If you like this, welcome to star/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
} finally {
    pLock.unlock(); 
}

// in non-blocking mode
if(pLock.tryLock()) {
   try {
       // to do something...
   } catch (Exception e) {
       // errors
   } finally {
       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

About Me:

License

Copyright 2018 pqpo

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

SmartCropper

🔥 A library for cropping image in a smart way that can identify the border and correct the cropped image. 智能图片裁剪框架。自动识别边框,手动调节选区,使用透视变换裁剪并矫正选区;适用于身份证,名片,文档等照片的裁剪。
Java
3,924
star
2

SmartCamera

📷SmartCamera 是一个 Android 相机拓展库,能够实时采集并且识别相机内物体边框是否吻合指定区域。SmartCamera is an Android camera extension library,provides a scanning module that can recognizes whether the object's border inside the camera matches the area in real time.
Java
1,254
star
3

Log4a

:octocat:Log4a is an mmap based, high-performance, highly available Android log collection library / Log4a 是一个基于 mmap, 高性能、高可用的 Android 日志收集框架
Java
963
star
4

InputMethodHolder

A keyboard listener for Android which by hooking the InputMethodManager. 通过hook监听系统键盘显示
Java
424
star
5

MethodHook

hook java methods
Java
134
star
6

AIPoet

基于人工智能(障)的 Android 写诗应用,无须联网随时随地写藏头诗,意境诗。娱乐、学习为主!
Kotlin
91
star
7

CppPrimer

c++学习代码
C++
18
star
8

ServiceAndIpcDemo

Service lifecycle and IPC Demo
Java
11
star
9

MvpGenerator

IntelliJ Idea 插件,生成Mvp模板代码
Java
7
star
10

load_another_app_resource

Load another application's resource like RemoteView do, just for fun!(像 RemoteView 一样加载其他应用的资源)
Java
6
star
11

start_undeclared_activity

Start an activity that is not declared in the AndroidManifest.xml (It's a demo, just for fun) 启动一个未注册的 Activity
Java
4
star
12

appiumn_auto_re-develope

Louis-me/appiumn_auto 该项目二次开发,以适应测试人员使用(无需编写任何python代码)
Python
3
star
13

registration_api

远程挂号系统api
Java
2
star
14

SimpleEncrypt

简单文件加密
Java
1
star
15

pqpo.github.io

HTML
1
star
16

android.asyncImageLoader

异步图像加载工具,可设置本地缓存,内存缓存,内存缓存使用弱引用防止内存溢出
Java
1
star