线程的第二种创建方式 实现接口Runnable

本文介绍了一种使用Runnable接口创建Java线程的方法,并通过具体代码示例展示了如何实现线程的功能,包括创建线程对象、启动线程以及线程运行过程中输出的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.mth.test2;

//线程的第二种创建方式 实现接口Runnable(实现接口还可以继承其他的类 程序扩展性更好)
//覆盖run()方法
//创建线程对象 通过构造方法 Thread(Runnable target)
//启动现场 对象.start()
public class ThreadTest2 implements Runnable {

	@Override
	public void run() {
		for (int i = 0; i < 20; i++) {
			System.out.println("Runnale Thread is running!");
		}
	}

	public static void main(String[] args) {

		ThreadTest2 test2 = new ThreadTest2();
		Thread t = new Thread(test2);
		t.start();
		for (int i = 0; i < 20; i++) {
			System.out.println("Main is running!");
		}
	}

}

### Java 中使用 `Runnable` 接口创建线程 在 Java 中,可以通过实现 `Runnable` 接口创建线程应用。这种方法的主要优势在于它避免了单继承的限制,并允许更灵活的任务分配和资源管理。 #### 基本原理 为了利用 `Runnable` 接口实现线程功能,需要遵循以下几个核心步骤: 1. **定义任务逻辑** 创建一个实现了 `Runnable` 接口的类,在其中重写 `run()` 方法以定义线程的具体行为[^1]。 2. **关联线程对象** 将 `Runnable` 的实例作为参数传递给 `Thread` 类的构造函数,从而将任务绑定到具体的线程对象上。 3. **启动线程** 调用线程对象的 `start()` 方法触发线程运行,这会自动调用 `run()` 方法中的代码。 以下是基于以上原则的一个具体示例: ```java public class MyTask implements Runnable { @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " 正在处理第 " + i + " 次任务"); try { Thread.sleep(100); // 模拟耗时操作 } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { MyTask task = new MyTask(); // 创建两个线程并分别命名 Thread threadA = new Thread(task, "线程-A"); Thread threadB = new Thread(task, "线程-B"); // 启动线程 threadA.start(); threadB.start(); } } ``` 在这个例子中: - 定义了一个名为 `MyTask` 的类,该类实现了 `Runnable` 接口。 - 在 `main` 方法中创建了两个独立的线程 (`threadA`, `threadB`) 并赋予它们不同的名称以便区分。 - 当调用 `start()` 方法后,每个线程都会执行自己的 `run()` 方法内容,但由于共享同一个 `task` 对象,因此可能会观察到交替打印的结果[^1]。 #### 进一步说明 当多个线程访问同一份数据或者资源时,可能引发竞争条件等问题。此时可以考虑引入同步机制(如 synchronized 关键字),确保临界区的安全性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值