JAVA经典面试题讨论---类加载,多线程
【摘要】 群里的小伙伴一个个都特别优秀,一大早便发来了小问题让大家讨论,简单讨论之后,要知其然,知其所以然,趁机巩固下近期知识图片图片图片一开始我首先想到的执行顺序就是“从父到子,静态先行”,但结尾声明了final关键字的Sting类型的常量; 正确输出结果:C 把 final去掉就是从父到子,静态先行了 输出结果: 图片然后大家就开始讨论原因,我的猜测是只调用了内存地址(错X)...
群里的小伙伴一个个都特别优秀,一大早便发来了小问题让大家讨论,简单讨论之后,要知其然,知其所以然,趁机巩固下近期知识
图片
图片
图片
一开始我首先想到的执行顺序就是“从父到子,静态先行”,但结尾声明了final关键字的Sting类型的常量;
正确输出结果:C
把 final去掉就是从父到子,静态先行了
输出结果:
图片
然后大家就开始讨论原因,我的猜测是只调用了内存地址(错X)…
然后又开始了…
图片
讲String类型变成了Integer,String是引用数据类型,Integer是包装类;
运行结果:
图片
当改变类型后,执行从父到子,且静态方法可直接通过类名调用。
原因:使用final和static同时修饰一个field字段,并且这个字段是基本类型或者String类型的,调用这个字段类不会初始化
常量存在常量池中,本质上并没有引用该常量的类,因此不会对其进行初始化
###################分割线#######################
CountDownLatch:线程执行完一系列操作才被唤醒 Down 相当–
Demo:
图片
CyclicBarrier:循环到一定点才被阻塞 相当于++
Demo:
图片
Semaphore:并发线程的控制
Demo
图片
图片
创建线程有几种方式?
1:继承Thread类,实现Runable接口
2:实现Callable接口,线程池中获得
创建线程池的方式?3种
实际上使用哪种?根据阿里巴巴开发手册并发处理中,要求
【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程
图片
通过new ThreadPoolExecutor()创建…
-------see see easy do do hard
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)