Java 了解下Thread

本文讲述了Java中子线程的异步执行,重点介绍了Thread.join方法的作用,即强制同步执行,以及其带有时长参数的特性。同时提到了Java面试中的核心知识点,包括30个专题,对于准备面试者有很大帮助。

e.printStackTrace();

}

});

//运行子线程 2

t2.start();

Thread t3= new Thread(() -> System.out.println(“3333333333333 Thread”));

//运行子线程 3

t3.start();

//主线程的输出

System.out.println(" The End !");

}

}

运行结果:

从运行结果,可以看到,三个子线程异步执行,所以导致每次运行的输出结果不一定是一样的,因为都在抢资源。

为了让这种异步执行的场景模拟更加真实,我们在子线程1上加上sleep(2000):

再看看运行结果,因为子线程1执行时间久,所以最后才执行完毕:

OK,接下来就是Thread.join()的运用了。

虽然子线程1执行得久,但是我们依然想先确保子线程1被执行完毕后才执行后面的代码,那么我们就需要调用子线程1的join()方法:

这样我们再看看运行结果,尽管子线程1执行了很久,但是其他的代码依然等待子线程1执行完毕再进行执行:

到这里,很明显已经看到了join的作用了,简单来说,就是主线程跟各子线程之间其实都是异步的执行的;

但是如果使用了某个子线程的join()方法,那么就是 强行在此刻转变成了同步执行,也就是后面还未执行的代码(子线程调用等),都必须等,等到使用join()方法的线程执行完毕才能继续放飞自我。

那么join方法还有其他作用么, 有的,在调用的时候发现是可以填入参数的:

这个参数,毫秒,作用是什么呢?

作用是最大等待时间,也就是说虽然使用了join(),后面的代码需要等待这个子线程执行完毕后才能开始运行,但是我们如果想实现,如果这子线程执行时间超过某个限制,我们就不等了,直接执行后面的代码,这么我们只需要把限制时间毫秒级别作为参数填入join()即可。

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们:

目录:

二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6

Java面试核心知识点

]

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

[外链图片转存中…(img-hiTa0nnL-1714302257606)]

Java面试核心知识点

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值