创建线程
创建一个线程有两种方法:
- 通过扩展
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线程调度程序
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王