Java中的几种线程池详解,linux学习路线图

本文介绍了Java中的CountDownLatch类在多线程协同工作中的应用,以及对象转型的概念和注意事项。此外,还分享了在IntelliJ IDEA中使用Maven打包Groovy和Java混合项目的解决方法,包括配置Maven的pom.xml文件。文章最后提到了面对代码问题和线上调试挑战时,Arthas工具如何提供帮助,并提及了一个全面的Java后端架构进阶学习资源。

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

CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。

CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。

对象转型(casting)

一个基类的引用类型变量可以“指向”其子类的对象。

一个基类的引用不可以访问其子类对象的新增成员(包括属性和方法)。

可以使用 “引用变量 instanceof 类名”来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。

子类对象可以当作基类的对象来使用,称作向上转型(upcasting),反之称为向下转型(downcasting)

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

  5. 是否有一个全局视角来查看系统的运行状况?

  6. 有什么办法可以监控到JVM的实时运行状态?

由于自己之前使用的是Gradle构建工具,最近切到Maven有些不太适应,特别是在java和groovy混编时,在打包jar包的过程中出现问题,困扰了很久,在网上查了一些资料,都是引入build插件即可,但是插件有的是eclipse的插件,进过分析和摸索终于得到了一个再intellij使用Maven打包混编项目的jar包的方法。


<dependency>

            <groupId>org.codehaus.groovy</groupId>

            <artifactId>groovy-all</artifactId>

            <version>2.4.8</version>

        </dependency>





    <build>

        <plugins>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <version>3.6.1</version>

                <configuration>

                    <source>1.8</source>

                    <target>1.8</target>

                </configuration>

            </plugin>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-jar-plugin</artifactId>

                <version>2.6</version>

                <configuration>

                    <archive>

                        <manifest>

                            <addClasspath>true</addClasspath>

                            <classpathPrefix>lib/</classpathPrefix>

                            <mainClass>com.okayqa.studentapd.T2</mainClass> <!-- 运行jar的main class  -->

                        </manifest>

                        <!-- 添加本地的jar -->

                        <manifestEntries>

                            <!-- 这个>lib/class-util-1.0.jar 路径是已经被打包到target/lib里的,多个包用空格隔开就可以了 -->

                            <Class-Path>/Users/fv/Documents/workspace/fun/build/libs/fun-1.0.jar</Class-Path>

                        </manifestEntries>

                    </archive>

                </configuration>

            </plugin>



            <plugin>

                <groupId>org.codehaus.gmaven</groupId>

                <artifactId>gmaven-plugin</artifactId>

                <version>1.2</version>

                <configuration>

                    <providerSelection>1.7</providerSelection>

                </configuration>


### 最后

由于文案过于长,在此就不一一介绍了,**这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存**等等知识详解。

![image](https://img-blog.csdnimg.cn/img_convert/8d041b66582e52979ac6fbe368cd3d4c.png)

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,**其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。**
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.youkuaiyun.com/m0_60958482/java-p7)**

![image](https://img-blog.csdnimg.cn/img_convert/7615e5cc599e7806138a3ac7b07ee098.png)

应的视频解析总结。**
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.youkuaiyun.com/m0_60958482/java-p7)**

[外链图片转存中...(img-N7pHAOvm-1630550539413)]

![image](https://img-blog.csdnimg.cn/img_convert/54707843503cbaa9f7b0d003a7e5c04c.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值