Skip to content

Commit

Permalink
update more codes
Browse files Browse the repository at this point in the history
  • Loading branch information
yjfnypeu committed Feb 10, 2018
1 parent f6b23b9 commit 441551b
Show file tree
Hide file tree
Showing 11 changed files with 343 additions and 119 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})

// compile project(':easythread')
compile 'com.github.yjfnypeu:EasyThread:0.2.0'
compile project(':easythread')
// compile 'com.github.yjfnypeu:EasyThread:0.2.0'
testCompile 'junit:junit:4.12'
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.lzh.easythread.AsyncCallback;
import com.lzh.easythread.EasyThread;
import com.lzh.easythread.Callback;

Expand All @@ -29,44 +31,49 @@ protected void onCreate(Bundle savedInstanceState) {
executor = EasyThread.Builder
.fixed(2)
.priority(Thread.MAX_PRIORITY)
.name("thread name")
.name("default thread name")
.build();
}

public void onNormalClick (View v) {


executor.name(editText.getText().toString())
.callback(new ThreadCallback())
resetThreadName();
executor.callback(new ThreadCallback())
.execute(new Runnable() {
@Override
public void run() {
Log.d("MainActivity", "在子线程处理一些任务");
}
});

Future<User> submit = executor.name("test submit")
AsyncCallback<User> async = new AsyncCallback<User>() {
@Override
public void onSuccess(User user) {
System.out.println("user = [" + user + "]");
}

@Override
public void onFailed(Throwable t) {
System.out.println("t = [" + t + "]");
}
};

executor.name("test submit")
.callback(new ThreadCallback())
.submit(new Callable<User>() {
// 使用异步任务
.async(new Callable<User>() {
@Override
public User call() throws Exception {
User user = new User();
user.username = "豪哥";
user.password = "123456";
return user;
}
});
try {
User user = submit.get(1, TimeUnit.SECONDS);
System.out.println(user);
} catch (Throwable e) {
e.printStackTrace();
}
}, async);
}

public void onExceptionClick (View v) {
executor.name(editText.getText().toString())
.callback(new ThreadCallback())
resetThreadName();
executor.callback(new ThreadCallback())
.execute(new Runnable() {
@Override
public void run() {
Expand All @@ -92,4 +99,11 @@ public void onStart(Thread thread) {

}
}

private void resetThreadName() {
String name = editText.getText().toString();
if (!TextUtils.isEmpty(name)) {
executor.name(name);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.lzh.easythread;

import android.os.Handler;
import android.os.Looper;

import java.util.concurrent.Executor;

final class AndroidMainExecutor implements Executor {

private static AndroidMainExecutor instance = new AndroidMainExecutor();
private Handler main = new Handler(Looper.getMainLooper());

static AndroidMainExecutor getInstance() {
return instance;
}

@Override
public void execute(final Runnable runnable) {
if (Looper.myLooper() == Looper.getMainLooper()) {
runnable.run();
return;
}

main.post(new Runnable() {
@Override
public void run() {
runnable.run();
}
});
}
}
10 changes: 10 additions & 0 deletions easythread/src/main/java/com/lzh/easythread/AsyncCallback.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.lzh.easythread;

/**
* Async callback class.
* @author haoge on 2018/2/9.
*/
public interface AsyncCallback<T> {
void onSuccess(T t);
void onFailed(Throwable t);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
package com.lzh.easythread;

import java.util.concurrent.Callable;
/**
* A Callable Wrapper to delegate {@link Callable#call()}
*/

final class CallableWrapper<T> implements Callable<T> {
private String name;
private Callback callback;
Expand Down
83 changes: 83 additions & 0 deletions easythread/src/main/java/com/lzh/easythread/CallbackDelegate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.lzh.easythread;

import java.util.concurrent.Executor;

/**
* The callback delegate class.
*
* @author haoge on 2018/2/9.
*/
final class CallbackDelegate implements Callback, AsyncCallback {

private Callback callback;
private AsyncCallback async;
private Executor deliver;

CallbackDelegate(Callback callback, Executor deliver, AsyncCallback async) {
this.callback = callback;
this.deliver = deliver;
this.async = async;
}

@Override
public void onSuccess(final Object o) {
if (async == null) return;
deliver.execute(new Runnable() {
@Override
public void run() {
try {
//noinspection unchecked
async.onSuccess(o);
} catch (Throwable t) {
onFailed(t);
}
}
});
}

@Override
public void onFailed(final Throwable t) {
if (async == null) return;
deliver.execute(new Runnable() {
@Override
public void run() {
async.onFailed(t);
}
});
}

@Override
public void onError(final Thread thread, final Throwable t) {
onFailed(t);

if (callback == null) return;
deliver.execute(new Runnable() {
@Override
public void run() {
callback.onError(thread, t);
}
});
}

@Override
public void onCompleted(final Thread thread) {
if (callback == null) return;
deliver.execute(new Runnable() {
@Override
public void run() {
callback.onCompleted(thread);
}
});
}

@Override
public void onStart(final Thread thread) {
if (callback == null) return;
deliver.execute(new Runnable() {
@Override
public void run() {
callback.onStart(thread);
}
});
}
}

0 comments on commit 441551b

Please sign in to comment.