创建线程

创建一个线程有两种方法:

  • 通过扩展Thread类。
  • 通过实现Runnable接口。

Thread类
Thread类提供了在线程上创建和执行操作的构造函数和方法。Thread类扩展了Object类并实现了Runnable接口。

常用的Thread类构造函数

  • Thread()
  • Thread(String name)
  • Thread(Runnable r)
  • Thread(Runnable r,String name)

Thread类的常用方法:

  • public void run(): 用于执行线程的操作。
  • public void start(): 开始执行线程,JVM调用线程上的run()方法。
  • public void sleep(long miliseconds): 使当前正在执行的线程休眠(暂时停止执行)达指定的毫秒数。
  • public void join(): 等待线程死亡。
  • public void join(long miliseconds): 按指定的毫秒数等待线程死亡。
  • public int getPriority(): 返回线程的优先级。
  • public int setPriority(int priority): 更改线程的优先级。
  • public String getName(): 返回线程的名称。
  • public void setName(String name): 更改线程的名称。
  • public int getId():返回线程的编号(ID)。
  • public Thread.State getState(): 返回线程的状态。
  • public boolean isAlive(): 测试线程是否处于活动状态。
  • public void yield(): 使当前正在执行的线程对象暂时暂停并允许其他线程执行。
  • public void suspend(): 用于挂起线程(depricated)。
  • public void resume(): 用于恢复挂起的线程(depricated)。
  • public void stop(): 用于停止线程(depricated)。
  • public boolean isDaemon(): 测试该线程是否为守护进程线程。
  • public void setDaemon(boolean b): 将线程标记为守护进程或用户线程。
  • public void interrupt(): 中断线程。
  • public boolean isInterrupted(): 测试线程是否被中断。
  • public static boolean interrupted(): 测试当前线程是否已被中断。

Runnable接口:
Runnable接口应由任何其实例由线程执行类实现。Runnable接口只有一个run()方法。

  • public void run(): 用于执行线程的操作。

启动线程:

Thread类的start()方法用于启动新创建的线程。它执行以下任务:

  • 一个新线程启动(使用新的callstack)。
  • 线程从New状态移动到Runnable状态。
  • 当线程有机会执行时,它的目标run()方法将运行。

示例

1. 通过扩展Thread类线程示例

package com.zyiz;

class Multi extends Thread {
    public void run() {
        System.out.println("thread is running...");
    }

    public static void main(String args[]) {
        Multi t1 = new Multi();
        t1.start();
    }
}

执行上面示例代码,得到以下结果:

thread is running...

2. 通过实现Runnable接口的线程示例

package com.zyiz;

class Multi implements Runnable {
    public void run() {
        System.out.println("thread is running...");
    }

    public static void main(String args[]) {
        Multi m1 = new Multi();
        Thread t1 = new Thread(m1);
        t1.start();
    }
}

执行上面示例代码,得到以下结果:

thread is running...

如果没有扩展Thread类,类对象就不会被视为一个线程对象。所以需要明确地创建Thread类对象。传递实现Runnable类的对象,以便类的run()方法可以执行。


上一篇:线程的生命周期(线程状态)

下一篇:Java线程调度程序

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程