- Gradle
implementation 'com.github.Justson:dispatch-queue:v1.0.5'
- 线程可以配对交换元素在同步点
- 线程空闲后执行task
- 阻塞执行
- 线程之间交叉执行
final StringBuffer output = new StringBuffer();
AsyncTask.execute(() -> {
output.append(1).append(", ");
GlobalQueue.getMainQueue().postRunnableBlocking(() -> {
// do you work , in the main-Thread
output.append(2).append(", ");
});
output.append(3).append(", ");
// invoke in the main-Thread and return a string data
String message = GlobalQueue.getMainQueue().call(() -> {
output.append(4).append(", ");
return "hello world";
});
output.append(5).append(" data ").append(message);
System.out.println(output.toString());
// output the order "1 2 3 4 5"
});
output the order :1, 2, 3, 4, 5
DispatchThread messageDispatch = DispatchThread.create("message");
messageDispatch.postRunnable(() -> {
// do you work , work in message thread
});
System.out.println("1");
messageDispatch.postRunnableScissors(() -> {
System.out.println("2");
});
System.out.println("3");
// output 1 2 3
// from message thread get a number, it will blocking until working finish.
int i = messageDispatch.call(() -> 1);
messageDispatch.postRunnableInIdleRunning(() -> {
// do your work , when the message thread idle will callback this runable
});