在Java中,线程使用Thread关键字来表示。所有线程对象,都必须来自Thread类或者Thread类子类的实例,所以掌握Thread类的常用方法就显得尤为重要。

静态方法

静态方法可以直接通过Thread.来调用

1.currentThread()

Thread.currentThread()方法会返回对当前正在执行的线程对象的引用。

2.activeCount()

Thread.activeCount() 方法会返回活动线程的当前线程的线程组中的数量。

3.interrupted()

测试当前线程是否中断,返回值类型为boolean类型。

4.sleep(long millis)

使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。

睡眠期间会让出CPU的执行权,CPU去执行其它线程,但是同时会继续监视睡眠的时间。需要的注意的是就算线程的睡眠时间到了,它也不会被立即运行,只是会从睡眠状态变为了可运行状态,而不是由睡眠状态直接变为运行状态的。

5.sleep(long millis, int nanos)

线程睡眠 millis 毫秒 + nanos 纳秒

6.yield()

Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。

跟sleep()方法一样,会让出CPU的执行权,但不会释放锁。
跟sleep()方法不同的是:yield方法只能让拥有相同优先级的线程有获取CPU执行时间的机会。还有就是它并不能控制具体的交出CPU的时间,因为yield() 方法只是使当前线程重新回到就绪态,所以执行 yield()的线程有可能在进入到可执行状态后马上又被执行。

实例方法

实例方法需要通过对象来调用。

1.getName()

返回此线程的名称。

2.setName(String name)

设置线程的名称为参数name

3.getPriority()

返回此线程的优先级,返回值为int。

4.interrupt()

中断这个线程。但并不是真的直接中断,而是告诉某个线程,需要进行中断,具体是否要中断,由该线程自己来决定。有一个已经被弃用的stop()方法,是真的中断一个线程。

通过 thread 对象调用 interrupt() 方法通知该线程停止运行,如果线程正在阻塞,则以异常方式通知,否则设置标志位。

5.isInterrupted()

测试这个线程是否被中断,返回值为boolean类型。跟上面的静态方法interrupted()不同的是isInterrupted()方法在被调用后不清除对象标志位。

6.isAlive()

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

7.isDaemon()

测试线程是否是守护线程。

8.run()

线程在被调度时执行的 操作,子线程要执行的代码放入run()方法。

9.start()

启动线程,并执行对象的 run() 方法

10.join(long millis)

等待该线程终止的时间最长为 millis 毫秒。join()方法会使当前线程等待调用 join() 方法的线程结束后才能继续执行。