IExecutor 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
执行已 Runnable 提交任务的对象。
[Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")]
public interface IExecutor : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")>]
type IExecutor = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 派生
- 属性
- 实现
注解
执行已 Runnable 提交任务的对象。 此接口提供了一种将任务提交与运行每个任务的机制分离的方法,包括线程使用、计划等的详细信息。通常使用 A Executor ,而不是显式创建线程。 例如,可以使用以下各项,而不是 new Thread(new RunnableTask()).start() 调用每个任务集:
{@code
Executor executor = anExecutor();
executor.execute(new RunnableTask1());
executor.execute(new RunnableTask2());
...}
但是,接口 Executor 并不严格要求执行是异步的。 在最简单的情况下,执行程序可以在调用方线程中立即运行提交的任务:
{@code
class DirectExecutor implements Executor {
public void execute(Runnable r) {
r.run();
}
}}
更通常,任务在调用方线程以外的某个线程中执行。 下面的执行程序为每个任务生成一个新线程。
{@code
class ThreadPerTaskExecutor implements Executor {
public void execute(Runnable r) {
new Thread(r).start();
}
}}
许多 Executor 实现对任务计划的方式和时间施加了某种限制。 下面的执行程序将任务提交到第二个执行程序,说明复合执行程序。
{@code
class SerialExecutor implements Executor {
final Queue<Runnable> tasks = new ArrayDeque<>();
final Executor executor;
Runnable active;
SerialExecutor(Executor executor) {
this.executor = executor;
}
public synchronized void execute(Runnable r) {
tasks.add(() -> {
try {
r.run();
} finally {
scheduleNext();
}
});
if (active == null) {
scheduleNext();
}
}
protected synchronized void scheduleNext() {
if ((active = tasks.poll()) != null) {
executor.execute(active);
}
}
}}
Executor此包ExecutorService中提供的实现是一个更广泛的接口。 该 ThreadPoolExecutor 类提供可扩展的线程池实现。 此类 Executors 为这些执行程序提供了方便的工厂方法。
内存一致性影响:在将对象提交Runnable到<Executor i>发生之前</i> 的线程中的操作开始(可能在另一个线程中)。
在 1.5 中添加。
Java文档java.util.concurrent.Executor。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
属性
| 名称 | 说明 |
|---|---|
| Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
| JniIdentityHashCode |
返回包装实例的值 |
| JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
| JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
| PeerReference |
返回JniObjectReference包装的Java对象实例。 (继承自 IJavaPeerable) |
方法
| 名称 | 说明 |
|---|---|
| Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
| Execute(IRunnable) |
在将来的某个时间执行给定的命令。 |
| Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
执行已 |
| SetPeerReference(JniObjectReference) |
设置由 |
| UnregisterFromRuntime() |
取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
执行已 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |