Java

1在Java中wait和sleep方法的不同?
等待wait会是释放锁,用于线程间交互,Sleep一直有锁,用于暂停执行
2 同步锁与死锁
同步锁:同一个时间内只允许一个线程访问共享数据,可以使用synchronize取对象同步锁
线程同步互斥 ,并发执行多个线程
死锁:多个线程同时被阻塞,一个或全部都在等待资源被释放
3 乐观锁和悲观锁是什么?
乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候 都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁
4 线程池的原理
控制线程的数量,创建,启动,等待,取出,控制最大并发数管理线程
线程复用:调用 start 启动线程Java 虚拟机调用该类的 run 方法,可以继承重写 Thread 类,start 方法中添断循环调用传递过来的Runnable 对象
线程池的组成:线程池管理,工作线程,任务接口,任务队列
拒绝策略:AbortPolicy 直接抛出异常,阻止系统正常运行
CallerRunsPolicy 线程池未关闭,直接调用线程中,运行丢弃的任务,提交线程可能会下降
DiscardOldestPolicy 丢弃最老的请求,执行任务,尝试提交
DiscardPolicy 丢弃无法处理的任务,不予任何处理
线程池的工作过程
创建线程池——调用execute()方法(<corePoolSize创建线程程序,>= corePoolSize个任务放入队列
< maximumPoolSize要创建非核心线程,>= maximumPoolSize线程 池会抛出异常 RejectExecutionException,
线程完成,取下任务执行,线程超时时,判断线程大于corePoolSize,完成后,收缩大小

5线程执行顺序
线程数小于线程数时建线程,到线程数等于核心线程数;
线程等于线程数,等待执行
队伍已满有新任务,创建相册大于等于线程数
大于线程数,会被拒绝任务
6线程的核心参数有哪些?
corePoolSize(核心线程数),queueCapacity(任务队列容量) maxPoolSize(最大线程数) keepAliveTime(线程空闲时间)
7. JVM 内存管理
PC 寄存器:记录线程运行位置 java 虚拟机栈:创建线程时创建存储栈 java 堆:线程共享存储静态变 方法区:线程共享,存储变量
本地方法栈:支持native方法
8分代收集算法和分区收集算法区别?
分代收集算法:VM 垃圾收集都采用”分代收集”算法,适用于Gc算法,在新生代-复制算法
在老年代-标记整理算法
分区收集算法:每个小区间独立使用, 独立回收,减少一次 GC 所产生的停顿
9.3GC 垃圾收集器
Java 堆内存被划分为新生代和年老代,新生代用复制和标记-清除垃圾回收算 法; 年老代主要使用标记-整理垃圾回收算法
不同垃圾回收集器::Serial 垃圾收集器 ,ParNew 垃圾收集器 ,ParallelScavenge 收集器
最常用的是 G1(GarbageFirst)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值