如何在Java中创建线程

有两种方法可以创建线程:

  1. 通过扩展Thread类
  2. 通过实现Runnable接口

Thread类:

Thread类提供了构造函数和方法来创建和执行线程。Thread类继承自Object类并实现了Runnable接口。

Thread类的常用构造函数:

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

Thread类的常用方法:

  1. public void run():用于执行线程的操作。
  2. public void start():启动线程。JVM调用线程的run()方法。
  3. public void sleep(long milliseconds):使当前正在执行的线程休眠(暂停执行)指定的毫秒数。
  4. public void join():等待线程死亡。
  5. public void join(long milliseconds):等待线程死亡,最多等待指定的毫秒数。
  6. public int getPriority():返回线程的优先级。
  7. public int setPriority(int priority):更改线程的优先级。
  8. public String getName():返回线程的名称。
  9. public void setName(String name):更改线程的名称。
  10. public Thread currentThread():返回当前正在执行的线程的引用。
  11. public int getId():返回线程的ID。
  12. public Thread.State getState():返回线程的状态。
  13. public boolean isAlive():测试线程是否活动。
  14. public void yield():使当前正在执行的线程对象暂停并允许其他线程执行。
  15. public void suspend():挂起线程(已弃用)。
  16. public void resume():恢复挂起的线程(已弃用)。
  17. public void stop():停止线程(已弃用)。
  18. public boolean isDaemon():测试线程是否为守护线程。
  19. public void setDaemon(boolean b):将线程标记为守护线程或用户线程。
  20. public void interrupt():中断线程。
  21. public boolean isInterrupted():测试线程是否已被中断。
  22. public static boolean interrupted():测试当前线程是否已被中断。

Runnable接口:

任何希望由线程执行的类都应该实现Runnable接口。Runnable接口只有一个名为run()的方法。

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

启动线程:

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

  • 启动一个新线程(具有新的调用堆栈)。
  • 线程从新建状态转移到可运行状态。
  • 当线程有机会执行时,它的目标run()方法将运行。

通过扩展Thread类的Java线程示例

文件名:Multi.java

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...

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

文件名:Multi3.java

class Multi3 implements Runnable{  
public void run(){  
System.out.println("thread is running...");  
}  
  
public static void main(String args[]){  
Multi3 m1=new Multi3();  
Thread t1 =new Thread(m1);   // 使用构造函数 Thread(Runnable r)
t1.start();  
 }  
}  

输出:

thread is running...

如果不扩展Thread类,你的类对象将不被视为线程对象。因此,你需要显式地创建Thread类对象。我们将实现了Runnable接口的类的对象传递给Thread类,以便执行该类的run()方法。

使用Thread类:Thread(String Name)

我们可以直接使用Thread类使用上述定义的构造函数生成新的线程。

文件名:MyThread1.java

public class MyThread1  
{  
// 主要方法  
public static void main(String argvs[])  
{  
// 使用构造函数 Thread(String name) 创建 Thread 类的对象   
Thread t= new Thread("My first thread");  
  
// start() 方法将线程移动到活动状态  
t.start();  
// 通过调用 getName() 方法获取线程名称
String str = t.getName();  
System.out.println(str);  
}  
}  

输出:

My first thread

使用Thread类:Thread(Runnable r, String name)

观察以下程序。

文件名:MyThread2.java

public class MyThread2 implements Runnable  
{    
public void run()  
{    
System.out.println("Now the thread is running ...");    
}    
    
// 主要方法  
public static void main(String argvs[])  
{   
// 创建类 MyThread2 的对象 
Runnable r1 = new MyThread2();   
  
// 使用 Thread(Runnable r, String name) 创建类 Thread 的对象  
Thread th1 = new Thread(r1, "My new thread");    
  
// start() 方法将线程移动到活动状态  
th1.start();   
  
// 通过调用 getName() 方法获取线程名称  
String str = th1.getName();  
System.out.println(str);  
}    
}    

输出:

My new thread
Now the thread is running ...

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想