Skip to content

Latest commit

History

112 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jaslock

TestsGitHub Repo stars

High-performance distributed sync service and atomic DB. Provides good multi-core support through lock queues, high-performance asynchronous binary network protocols. Can be used for spikes, synchronization, event notification, concurrency control. https://github.com/snower/slock

Install

<dependency>
<groupId>io.github.snower</groupId>
<artifactId>jaslock</artifactId>
<version>1.1.3</version>
</dependency>

Client Lock

packagemain;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.Event;
importio.github.snower.jaslock.Lock;
importio.github.snower.jaslock.SlockReplsetClient;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.exceptions.SlockException;
importjava.io.IOException;
importjava.nio.charset.StandardCharsets;
publicclassApp {
publicstaticvoidmain(String[] args) {
SlockClientclient = newSlockClient("127.0.0.1", 5658);
try {
client.open();
Locklock = client.newLock("test", 5, 5);
lock.acquire();
lock.release();
} catch (IOException | SlockExceptione) {
e.printStackTrace();
} finally {
client.close();
}
}
}

Replset Client Lock

packagemain;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.Event;
importio.github.snower.jaslock.Lock;
importio.github.snower.jaslock.SlockReplsetClient;
importio.github.snower.jaslock.exceptions.SlockException;
importjava.io.IOException;
importjava.nio.charset.StandardCharsets;
publicclassApp {
publicstaticvoidmain(String[] args) {
SlockReplsetClientreplsetClient = newSlockReplsetClient(newString[]{"127.0.0.1:5658"});
try {
replsetClient.open();
Locklock = replsetClient.newLock("test", 5, 5);
lock.acquire();
lock.release();
} catch (SlockExceptione) {
e.printStackTrace();
} finally {
replsetClient.close();
}
}
}

Async Callback Lock

packagemain;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.Event;
importio.github.snower.jaslock.Lock;
importio.github.snower.jaslock.SlockReplsetClient;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.exceptions.SlockException;
importjava.io.IOException;
importjava.nio.charset.StandardCharsets;
publicclassApp {
publicstaticvoidmain(String[] args) {
SlockClientclient = newSlockClient("127.0.0.1", 5658);
client.enableAsyncCallback();
try {
client.open();
Locklock = client.newLock("test", 5, 5);
lock.acquire(callbackFuture -> {
try {
callbackFuture.getResult();
lock.release(callbackFuture1 -> {
try {
callbackFuture1.getResult();
System.out.println("succed");
} catch (IOException | SlockExceptione) {
e.printStackTrace();
} finally {
client.close();
}
});
} catch (IOException | SlockExceptione) {
e.printStackTrace();
client.close();
}
});
} catch (IOException | SlockExceptione) {
e.printStackTrace();
client.close();
}
try {
Thread.sleep(2000);
} catch (InterruptedExceptionignored1) {}
}
}

Async Future Lock

packagemain;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.Event;
importio.github.snower.jaslock.Lock;
importio.github.snower.jaslock.SlockReplsetClient;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.exceptions.SlockException;
importjava.io.IOException;
importjava.nio.charset.StandardCharsets;
importjava.util.concurrent.ExecutionException;
publicclassApp {
publicstaticvoidmain(String[] args) {
SlockReplsetClientreplsetClient = newSlockReplsetClient(newString[]{"127.0.0.1:5658"});
replsetClient.enableAsyncCallback();
try {
replsetClient.open();
Locklock = replsetClient.newLock("test", 5, 5);
CallbackFuture<Boolean> callbackFuture = lock.acquire(null);
callbackFuture.get();
callbackFuture = lock.release(null);
callbackFuture.get();
} catch (IOException | SlockException | ExecutionException | InterruptedExceptione) {
e.printStackTrace();
} finally {
client.close();
}
}
}

Event

packagemain;
importio.github.snower.jaslock.SlockClient;
importio.github.snower.jaslock.Event;
importio.github.snower.jaslock.Lock;
importio.github.snower.jaslock.SlockReplsetClient;
importio.github.snower.jaslock.SlockReplsetClient;
importio.github.snower.jaslock.exceptions.SlockException;
importjava.io.IOException;
importjava.nio.charset.StandardCharsets;
publicclassApp {
publicstaticvoidmain(String[] args) {
SlockReplsetClientreplsetClient = newSlockReplsetClient(newString[]{"127.0.0.1:5658"});
try {
replsetClient.open();
Eventevent1 = replsetClient.newEvent("test", 5, 5, true);
event1.clear();
Eventevent2 = replsetClient.newEvent("test", 5, 5, true);
event2.set("{\"value\": 10}");
event1.wait(10);
System.out.println(event1.getCurrentLockDataAsString());
} catch (SlockExceptione) {
e.printStackTrace();
} finally {
replsetClient.close();
}
}
}

License

slock uses the MIT license, see LICENSE file for the details.

About

slock java client

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages