Java中 r.run() 方法和 t.start() 方法的区别

本文详细解释了Java中如何使用Thread类创建线程并启动线程的方法,对比了直接调用run方法与通过start方法的区别,阐述了正确使用start方法的重要性。

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

程序:

public class Main {

	public static void main(String[] args) {

		Runner r = new Runner();
		Thread t = new Thread(r);
		System.out.println(Thread.currentThread());
		r.run(); // 这两个方法有什么区别?
		t.start(); // 这两个方法有什么区别?

	}
}

class Runner implements Runnable {
	@Override
	public void run() {
		System.out.println(Thread.currentThread() + " Run() begin!");
	}
}
结果:
Thread[main,5,main]
Thread[main,5,main] Run() begin!

Thread[Thread-0,5,main] Run() begin!


run() 就是运行了
start() 就是开始了
首先,之所以出现线程,就是为了更好的利用CPU,让她更加“精明”的干活。通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程,而如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。

记住:线程就是为了更好地利用CPU,提高程序运行速率的!

public class Main {
	public static void main(String[] args) {
		Runner1 r = new Runner1();
		r.run();// 这是方法调用,而不是开启一个线程
		Thread t = new Thread(r);// 调用了Thread(Runnable target)方法。且父类对象变量指向子类对象。
		t.start();

		for (int i = 0; i < 100; i++) {
			System.out.println("进入Main Thread运行状态");
			System.out.println(i);
		}
	}
}

class Runner1 implements Runnable { // 实现了这个接口,jdk就知道这个类是一个线程
	public void run() {

		for (int i = 0; i < 100; i++) {
			System.out.println("进入Runner1运行状态");
			System.out.println(i);
		}
	}
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值