赞
踩
目录
2.sleep()、wait()、join()、yield()之间的的区别?
9.ReentrantLock中tryLock()和lock()⽅法的区别
10.Sychronized和ReentrantLock的区别
- sleep就是把cpu的执⾏资格和执⾏权释放出去,不再运⾏此线程,当定时时间结束再取回cpu资源,
- 参与cpu的调度,获取到cpu资源后就可以继续运⾏了。⽽如果sleep时该线程有锁,那么sleep不会
- 释放这个锁,⽽是把锁带着进⼊了冻结状态,也就是说其他需要这个锁的线程根本不可能获取到这个
- 锁。也就是说⽆法执⾏程序。如果在睡眠期间其他线程调⽤了这个线程的interrupt⽅法,那么这个
- 线程也会抛出interruptexception异常返回,这点和wait是⼀样的。
- public static void main(String[] args) throws InterruptedException {
- Thread t1 = new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("22222222");
- }
- });
- t1.start();
- t1.join();
- // 这⾏代码必须要等t1全部执⾏完毕,才会执⾏
- System.out.println("1111");
- }
-
-
-
-
- ###执行结果
- 22222222
- 1111
1. 串⾏在时间上不可能发⽣重叠,前⼀个任务没搞定,下⼀个任务就只能等着。
2. 并⾏在时间上是重叠的,两个任务在同⼀时刻互不干扰的同时执行。
用线程池的原因:
1、降低资源消耗;提⾼线程利用率,降低创建和销毁线程的消耗。
2、提⾼响应速度;任务来了,直接有线程可用可执行,而不是先创建线程,再执行。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后还为大家献上一个小程序,里面不仅有海量的面试题,还可以根据自己的级别在线刷题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。