欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA(线程)——线程的启动与结束

程序员文章站 2024-03-05 18:36:13
...

实例描述

在JAVA中,有两种方法可以创建线程:一种是继承Thread类;另一种是实现Runnable接口。不管采用哪种方式,都要用到JAVA类库中的Thread类及相关方法。本实例将展示如何启动和结束线程

运行代码

import java.util.Date;

public class StartThread {
	public void startY() {
		ThreadY ty = new ThreadY(); // 创建实例
		ty.startThreadY(); // 启动ThreadY线程
		try {
			Thread.sleep(1000); // 当前线程休眠一秒
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		ty.stopThreadY(); // 停止ThreadY线程
	}

	public void startX() { // 开始第二个
		Runnable runnX = new ThreadX(); //创建实例
		Thread threadX = new Thread(runnX); // 将实例放入线程中
		threadX.start(); // start()方法启动线程
	}

	public static void main(String[] args) { // 在JAVA程序主入口处
		StartThread test = new StartThread(); // 实例化对象
		test.startY(); // 调用方法
		test.startX();
	}

}

class ThreadY extends Thread { // 继承java.lang.Thread类定义线程
	private boolean isRunState = false; // 标记线程是否需要运行

	public void start() { // 覆盖了父类的start方法
		this.isRunState = true; // 将isRunState置为true,表示线程需要运行
		super.start();
	}

	public void run() {
		int i = 0;
		try {
			while (isRunState) {// 如果isRunState为真,说明线程还可以继续运行
				this.setName("Thread-" + i++);
				System.out.println("线程Y: " + this.getName() + "正在运行");
				Thread.sleep(200); // sleep()方法将当前线程休眠
			}
		} catch (Exception e) {
			// 捕获异常
		}
		System.out.println(this.getName() + " 运行结束...");
	}

	public void setRunning(boolean isRunState) { // 设置线程
		this.isRunState = isRunState;
	}

	public void startThreadY() { // 启动线程
		System.out.println("启动线程Y...");
		this.start();
	}

	public void stopThreadY() { // 停止ThreadY线程
		System.out.println("结束线程Y...");
		this.setRunning(false);
	}
}

class ThreadX implements Runnable { // 实现java.lang.Runnable接口定义线程
	private Date runDate; // 线程被运行的时刻

	public void run() {
		System.out.println("线程X已经启动...");
		this.runDate = new Date();
		System.out.println("启动时间: " + runDate.toString());
	}
}

运行结果

JAVA(线程)——线程的启动与结束

代码解析

在传统程序语言中,运行的顺序总是按照一定的流程来进行的,即使遇到选择、循环语句也是一次只能运行一个程序块。Java多线程打破了这种束缚,使程序可以同时运行多个程序块,使程序运行的效率变得更高。例如,有些包含循环的线程可能要使用比较长的一段时间来运行,此时便可让另一线程来做其他处理。如图所示:
JAVA(线程)——线程的启动与结束

知识拓展

使用多线程,首先要学会创建多线程。Java中创建多线程有两种方式:继承Thread类和实现Runnable接口。

  • Thread类存放在java.lang类库,因为它会自动加载。run()方法是定义在Thread类里的一个方法,因此把线程的程序代码编写在run()方法内,事实上就是覆盖的操作。可按照如下图的方式来编写一个多线程:

JAVA(线程)——线程的启动与结束

  • Runnable接口:
    如果自定义的线程还要继承其他类,这是就不能采用第一种方式来创建。由于Java语言不支持类的多继承,却可以实现多个接口,所以这种情况就可以采用实现Runnable接口的方式创建。通常实现Runnable接口创建线程的语法格式如图示:

JAVA(线程)——线程的启动与结束

相关标签: JAVA编程练习题