Thread 类

定义

线程是程序中的执行线程。

[Android.Runtime.Register("java/lang/Thread", DoNotGenerateAcw=true)]
public class Thread : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IRunnable
[<Android.Runtime.Register("java/lang/Thread", DoNotGenerateAcw=true)>]
type Thread = class
    inherit Object
    interface IRunnable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
Thread
派生
属性
实现

注解

线程是程序中的执行线程。 Java虚拟机允许应用程序同时运行多个执行线程。

每个线程都有一个优先级。 优先级较高的线程优先于优先级较低的线程执行。 每个线程都可以或可能不会标记为守护程序。 当某些线程中运行的代码创建新 Thread 对象时,新线程的优先级最初设置为与创建线程的优先级相等,并且仅在创建线程是守护程序时才是守护程序线程。

Java虚拟机启动时,通常有一个非守护程序线程(通常调用名为main某些指定类的方法)。 Java虚拟机继续执行线程,直到发生以下任一操作:<ul><li>exit 已调用类Runtime的方法,并且安全管理器已允许执行退出操作。 <li>不是守护程序线程的所有线程都已死亡,要么从方法调用 run 返回,要么引发超出方法的 run 异常。 </ul>

可通过两种方法创建新的执行线程。 一个是将类声明为 的 Thread子类。 此子类应重写 runThread的方法。 然后,可以分配并启动子类的实例。 例如,计算大于指定值的质数的线程可以按如下方式写入: <hr><blockquote>

class PrimeThread extends Thread {
                    long minPrime;
                    PrimeThread(long minPrime) {
                        this.minPrime = minPrime;
                    }

                    public void run() {
                        // compute primes larger than minPrime
                        &nbsp;.&nbsp;.&nbsp;.
                    }
                }

</blockquote><hr>

然后,以下代码将创建一个线程并启动它正在运行: <blockquote>

PrimeThread p = new PrimeThread(143);
                p.start();

</blockquote>

创建线程的另一种方法是声明实现接口的 Runnable 类。 然后,该类实现 run 该方法。 然后,可以分配类的实例,在创建 Thread和启动时作为参数传递。 此其他样式中的同一示例如下所示: <hr><blockquote>

class PrimeRun implements Runnable {
                    long minPrime;
                    PrimeRun(long minPrime) {
                        this.minPrime = minPrime;
                    }

                    public void run() {
                        // compute primes larger than minPrime
                        &nbsp;.&nbsp;.&nbsp;.
                    }
                }

</blockquote><hr>

然后,以下代码将创建一个线程并启动它正在运行: <blockquote>

PrimeRun p = new PrimeRun(143);
                new Thread(p).start();

</blockquote>

每个线程都有一个用于标识的名称。 多个线程可能具有相同的名称。 如果在创建线程时未指定名称,则会为其生成一个新名称。

除非另有说明,否则将参数传递给 null 此类中的构造函数或方法将导致 NullPointerException 引发。

在 1.0 中添加。

Java文档java.lang.Thread

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
Thread()

分配新 Thread 对象。

Thread(Action, String)

线程是程序中的执行线程。

Thread(Action)

线程是程序中的执行线程。

Thread(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

Thread(IRunnable, String)

分配新 Thread 对象。

Thread(IRunnable)

分配新 Thread 对象。

Thread(String)

分配新 Thread 对象。

Thread(ThreadGroup, Action, String, Int64)

线程是程序中的执行线程。

Thread(ThreadGroup, Action, String)

线程是程序中的执行线程。

Thread(ThreadGroup, Action)

线程是程序中的执行线程。

Thread(ThreadGroup, IRunnable, String, Int64, Boolean)

分配一个新 Thread 对象,使其具有 target 其运行对象、 name 指定为其名称、属于所 group引用的线程组、指定 stackSize对象,并继承 InheritableThreadLocal 可继承线程本地变量的初始值(如果 inheritThreadLocalstrue)。

Thread(ThreadGroup, IRunnable, String, Int64)

分配一个新 Thread 对象,使其具有 target 其运行对象、 name 指定为其名称,并属于所 group引用的线程组,并且具有指定的 堆栈大小

Thread(ThreadGroup, IRunnable, String)

分配一个新 Thread 对象,使其具有 target 其运行对象、 name 指定为其名称,并属于所 group引用的线程组。

Thread(ThreadGroup, IRunnable)

分配新 Thread 对象。

Thread(ThreadGroup, String)

分配新 Thread 对象。

字段

名称 说明
MaxPriority

线程可以拥有的最大优先级。

MinPriority

线程可以具有的最低优先级。

NormPriority

分配给线程的默认优先级。

属性

名称 说明
AllStackTraces

返回所有实时线程的堆栈跟踪映射。

Class

返回此 Object的运行时类。

(继承自 Object)
ContextClassLoader

返回此线程的上下文 ClassLoader 。 - 或 - 设置此线程的上下文 ClassLoader。

Daemon

测试此线程是否为守护程序线程。 - 或 - 将此线程标记为 #isDaemon 守护程序线程或用户线程。

DefaultUncaughtExceptionHandler

返回在线程因未捕获异常而突然终止时调用的默认处理程序。 - 或 - 设置在线程因未捕获异常而突然终止时调用的默认处理程序,并且尚未为该线程定义其他处理程序。

Handle

基础 Android 实例的句柄。

(继承自 Object)
Id

返回此线程的标识符。

IsAlive

测试此线程是否处于活动状态。

IsInterrupted

测试此线程是否已中断。

IsVirtual

如果此线程是虚拟线程,则返回 true

JniIdentityHashCode

线程是程序中的执行线程。

(继承自 Object)
JniPeerMembers

线程是程序中的执行线程。

Name

返回此线程的名称。 - 或 - 将此线程的名称更改为等于参数 name

PeerReference

线程是程序中的执行线程。

(继承自 Object)
Priority

返回此线程的优先级。 - 或 - 更改此线程的优先级。

ThreadGroup

返回此线程所属的线程组。

ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

UncaughtExceptionHandler

返回此线程因未捕获异常而突然终止时调用的处理程序。 - 或 - 设置由于未捕获异常而突然终止此线程时调用的处理程序。

方法

名称 说明
ActiveCount()

返回当前线程 java 中活动线程数的估计值。

CheckAccess()

确定当前正在运行的线程是否有权修改此线程。

Clone()

创建并返回此对象的副本。

(继承自 Object)
CountStackFrames()
已过时.

计算此线程中的堆栈帧数。

CurrentThread()

返回对当前正在执行的线程对象的引用。

Destroy()
已过时.

引发 UnsupportedOperationException

Dispose()

线程是程序中的执行线程。

(继承自 Object)
Dispose(Boolean)

线程是程序中的执行线程。

(继承自 Object)
DumpStack()

将当前线程的堆栈跟踪输出到标准错误流。

Enumerate(Thread[])

将指定数组复制到当前线程的线程组及其子组中的每个活动线程。

Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetStackTrace()

返回表示此线程堆栈转储的堆栈跟踪元素数组。

GetState()

返回此线程的状态。

HoldsLock(Object)

返回 true 当前线程在指定对象上保留监视器锁时返回。

Interrupt()

中断此线程。

Interrupted()

测试当前线程是否已中断。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Join()

等待此线程死亡。

Join(Int64, Int32)

等待最多 millis 毫秒加上 nanos 纳秒,使此线程死亡。

Join(Int64)

等待最多 millis 毫秒等待此线程死亡。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
OnSpinWait()

指示调用方暂时无法进行,直到发生其他活动的一个或多个操作。

Resume()
已过时.

引发 UnsupportedOperationException

Run()

如果此线程是使用单独的Runnable运行对象构造的Runnable,则调用该run对象的方法;否则,此方法不执行任何操作并返回。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Sleep(Int64, Int32)

使当前正在执行的线程睡眠(暂时停止执行),以指定的毫秒数加上指定的纳秒数,受系统计时器和计划程序精度和准确性的约束。

Sleep(Int64)

使当前正在执行的线程处于睡眠状态(暂时停止执行)的指定毫秒数,受系统计时器和计划程序精度和准确性的约束。

Start()

导致此线程开始执行;Java虚拟机调用run此线程的方法。

Stop()
已过时.

引发 UnsupportedOperationException

Stop(Throwable)
已过时.

引发 UnsupportedOperationException

Suspend()
已过时.

引发 UnsupportedOperationException

ThreadId()

返回此线程的标识符。

ToArray<T>()

线程是程序中的执行线程。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

线程是程序中的执行线程。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Yield()

向计划程序提示当前线程愿意生成其当前处理器的使用。

显式接口实现

名称 说明
IJavaPeerable.Disposed()

线程是程序中的执行线程。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

线程是程序中的执行线程。

(继承自 Object)
IJavaPeerable.Finalized()

线程是程序中的执行线程。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

线程是程序中的执行线程。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

线程是程序中的执行线程。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

线程是程序中的执行线程。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

线程是程序中的执行线程。

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

线程是程序中的执行线程。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于