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

标签: JAVA编程练习题

实例描述

在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中创建多线程有两种方式:继承Thread类和实现Runnable接口。

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

在这里插入图片描述

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

在这里插入图片描述

版权声明:本文为qq_43914901原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43914901/article/details/105556469