Java多线程---main与子线程 start与run

本文通过三个测试案例详细解释了Java中线程的启动和运行方式。PureThread类继承自Thread,其run()方法用于打印线程名。测试1显示直接调用run()方法不会创建新线程,而是在主线程中执行。测试2展示了调用start()会创建新线程并执行run(),导致两个线程分别打印输出。测试3表明仅调用start()方法,新线程会自动调用run(),主线程不参与打印。
摘要由CSDN通过智能技术生成

假设有个PureThread,继承了Thread,定义如下:

public class PureThread extends Thread {
public void run() {
System. out .println(Thread.currentThread().getName()+ ” r1” );
}
}

我们现在来写个测试类测试:
测试1:
public class TestPureThread {
public static void main(String args[]){
PureThread p1= new PureThread();
PureThread p2 =new PureThread();
p1.run();
}

}
输出结果:main r1
这里只有一个主线程main,按照程序往下进行,执行到p1.run()语句的时候就去调用了p1的方法,跟调用一般对象的某个方法没有区别。

测试2:
public class TestPureThread {
public static void main(String args[]){
PureThread p1 =new PureThread();
PureThread p2 =new PureThread();
p1 .start();
p1 .run();
}

}
输出结果:main r1
Thread-0 r1
p1.start会创建一个新的线程并且启动它,所以此时有两个线程,也能看到输出了两个语句,第一行是主线程执行到p1.run()的时候去调用了p1中的run方法&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值