java-解读Thread类

匿名 (未验证) 提交于 2019-12-02 21:53:52

线程是程序中的一个执行线程。java虚拟机允许应用程序具有多个线程执行并发运行。
每个线程都有优先权。优先级较高的线程优先于优先级较低的线程执行。
每个线程可能或可能不被标记为守护进程。

当代码运行时一些线程创建一个新的Thread对象,新的线程的优先级最初设置等于
它的创建线程,当创建线程是一个守护线程,它也是守护线程

当一个java虚拟机启动时,通常有一个单一的非守护进程线程(通常调用名为某些指定类的main
java虚拟机器继续执行线程,直到以下任一个发生:
1、Runtime的exit方法以及被调用 并且安全管理器允许退出操作发生。
2、不是守护线程线程的所有线程都已死亡,从调用返回到run方法或通过抛出传播超出run方法的异常。

有两种方法来创建一个新的执行线程。
一是
将类声明为Thread的子类。这个
*子类应该重写类的Runnable方法
然后子类的实例可以是分配和启动。

例如,一个计算素数大于规定值的线程可写如下:

   class PrimeThread extends Thread {  *         long minPrime;  *         PrimeThread(long minPrime) {  *             this.minPrime = minPrime;  *         }  *  *         public void run() {  *             // compute primes larger than minPrime  *              . . .  *         }  *     }

*下面的代码将创建一个线程并开始运行它:

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

*创建线程的另一种方法是声明一个类实现<代码> Runnaby<代码>接口。
*然后被分配,在创建时作为参数传递

那个类实现runnable方法。当创建并启动线程时,类的一个实例被分配,并作为参数传递

  class PrimeRun implements Runnable {  *         long minPrime;  *         PrimeRun(long minPrime) {  *             this.minPrime = minPrime;  *         }  *  *         public void run() {  *             // compute primes larger than minPrime  *             &nbsp;.&nbsp;.&nbsp;.  *         }  *     } *

*下面的代码将创建一个线程并开始运行它:

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

*每个线程都有用于标识目的的名称。
不止一个线程可能具有相同的名称。如果未指定名称时创建一个线程,为它生成一个新名称。
*除非另有说明,将{@代码null }参数传递给构造函数。或该类中的方法将导致NullPointerException

文章来源: java-解读Thread类
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!