JVM优化与并发编程

本文详细探讨了Java虚拟机中的垃圾回收器类型,包括新生代的复制算法和老年代的不同收集器,还介绍了JVM关键参数设置。此外,讲解了线程创建方式、生命周期和多线程工具方法,以及线程池的作用及其参数。重点涉及线程池的创建和常用ExecutorService方法。
摘要由CSDN通过智能技术生成

1.常用的垃圾回收器

1.1 新生代收集器(都是采用复制算法):单线程收集器、多线程收集器、多线程收集器(可以控制回收时间+可以控制回收的吞吐量)

1.2 老年代收集器:单线程收集器(采用标记整理算法)、最短回收停顿时间并发线程(有四个步骤:1.初始标记、2.并发标记、3.重新标记、4.并发清除)、多线程收集器(可以控制回收时间+可以控制回收的吞吐量)

1.3 堆收集:收集范围是整个堆内存

2.jvm常用参数:xms(初始堆大小)、xmx(最大堆大小)、xmn(新生代内存大小)、xss(线程堆栈大小)

3.创建线程的方式以及他们的区别:

3.1 实现runnable接口:通过thread调用start方法来启动线程,没有返回值

3.2  实现callable接口:通过thread调用start方法来启动线程,有返回值

3.3  继承thread类:java不支持多继承类,继承了thread类就不能再继承其他类,开销过大

4.线程的生命周期:

新建、就绪、运行、阻塞、死亡

5.多线程常用的方法:

1.   start():启动线程,调用run方法;yield():把执行状态修改为就绪状态;sleep()休眠;join()阻塞;wait()等待;deamon():守护线程,当所有线程结束,守护线程最后也结束;

2.  sleep和wait的区别:1.sleep是thread对象,wait是object对象;2.sleep不需要释放锁,wait需要释放锁;3.wait需要synchronized关键字,sleep不需要

6.线程池的作用:

1.控制并发数量,管理线程;2.线程的复用,避免重复创建或销毁线程;3.管理线程的生命周期

7.线程池的7大参数:1.corePoolSize核心线程数  2.maxinumPoolSize最大线程数  3.keepAliveTime多于空闲线程存活时间  4.unit空闲时间单位  5.workQueue 任务队列  6.threadFactory线程工厂  7.handler拒绝策略

7.executors(创建线程池的工具类)创建线程池的常用方法:

1.newSingleThreadExecutor:创建一个单线程的线程池。这个线程池中只有一个线程在工作,即相当于单线程串行执行所有任务;如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。任务的执行顺序按照任务的提交顺序执行。

2.newCachedThreadPool:创建一个缓存池大小可根据需要伸缩的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步执行的程序而言,这些线程池可提高程序性能。

3.newFixedThreadPool(int n):创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程

4.ScheduledThreadPool:带定时任务的线程池

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值