线程和锁自整理面试题

计算机考研常见面试题 写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数 阅读详情

1.线程的实现方式

常见的有3种:
Thread:继承Thread类,start启动线程,重写run方法执行。
Runnable:实现Runnable接口,start启动线程,重写run方法执行。
Callable:实现Callable接口,start启动线程,并实现其call()方法。能返回指定的参数。
接口的start方法都是通过Thread调用。

2.线程的执行流程。

新建:创建了线程。
就绪:执行start(),进入队列,等待JVM的调度。
运行:得到CPU时间片开始执行run方法,可以变为阻塞,就绪,死亡状态。
阻塞:
1)等待阻塞:wait()方法
2)同步阻塞:访问资源被锁synchronized
3)其他阻塞:sleep() join()
死亡:线程执行完任务或其他中止条件。

3.导致阻塞的原因。

Sleep()进入休眠不会放弃锁资源。
Wait()放弃锁资源挂起,线程等到 notify() 或 notifyAll() 线程通讯消息来唤醒线程。
等待某个IO完成,访问资源被锁。

4.中断线程的方法

设置退出标记,一般在run()方法执行完后。
interrupt() 方法中断线程。
stop 方法强行终止线程(会造成数据错乱丢失)。

5.线程安全。

多个线程访问同一资源时会有数据污染和不同步的问题。解决方案:
1)互斥/阻塞同步/悲观锁:
共享数据同一时间只能被1个线程使用。可以通过synchronized 和 java.util.concurrent包中的重入锁(ReentrantLock)来实现同步。都有线程的可重入性,ReentrantLock表现为 API 层面的互斥锁(lock() 和 unlock() 方法配合 try/finally 语句块来完成),synchronized为原生语法层面的互斥锁。不过,相比 synchronized,ReentrantLock 增加了一些高级功能,主要有以下 3 项:等待可中断、可实现公平锁,以及锁可以绑定多个条件。
等待可中断是指当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情,可中断特性对处理执行时间非常长的同步块很有帮助。
公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁;而非公平锁则不保证这一点。synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但可以通过带布尔值的构造函数要求使用公平锁。

2)非阻塞同步/乐观锁:
和悲观锁的全部加锁不同,乐观锁基于冲突检测,当发生冲突后才加锁。
3)无同步方案:
不存在共享数据的时候就不存在线程安全的问题。像service一个线程一次请求这种代码天生就是线程安全的。
可重入代码 :这种代码也叫做纯代码,可以在代码执行的任何时刻中断它,转而去执行另外一段代码(包括递归调用它本身),而在控制权返回后,原来的程序不会出现任何错误。

6 . Synchronized和Lock

Synchronized:

  1. 范围
    修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
    修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
    修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
    2)原理
    monitorenter :每个对象有一个监视器锁(monitor)。当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取monitor的所有权。
    如果monitor的进入数为0,则该线程进入monitor,然后将进入数设置为1,该线程即为monitor的所有者。
    如果其他线程已经占用了monitor,则该线程进入阻塞状态,直到monitor的进入数为0,再重新尝试获取monitor的所有权。

Lock:
原理:基于CAS和volatile 的乐观锁。
CAS:就是比较并更新,从某一内存上取值V,和预期值A进行比较,如果内存值V和预期值A的结果相等,那么我们就把新值B更新到内存,如果不相等,那么就重复上述操作直到成功为止。
volatile :被volatile修饰的变量保证对所有线程可见。通过禁止指令重排序保证了有序性。
可重入独占锁ReentrantLock和读写锁ReadWriteLock是最常用的,其实现都依赖 java.util.concurrent.AbstractQueuedSynchronizer 类。

区别:
synchronized修饰代码块,方法,类,Lock锁lock和unlock中间的代码段。
synchronized由JVM加锁解锁,Lock自己加锁解锁。
synchronized是悲观锁效率低,JDK1.6优化过。Lock乐观锁效率高。

7.java.util.concurrent

java.util.concurrent是专门Java并发设计编程包又叫线程并发库。
显示锁java.util.concurrent.locks
原子变量类 java.util.concurrent.atomic 包中的很多类使用很高效的机器级指令(而不是锁)来保证操作的原子性。
线程池相关 java.util.concurrent
并发容器类 java.util.concurrent 集合队列的线程安全类。
同步工具类 java.util.concurrent 计数器,计算信号量等等。

8.锁的一些概念

可重入锁:
指的是同一线程外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响,执行对象中所有同步方法不用再次获得锁。避免了频繁的持有释放操作,这样既提升了效率,又避免了死锁。
自旋锁:
如果资源被其他线程锁定,本线程自己不断尝试获取锁。但是长时间自旋就变成了“忙式等待”,忙式等待显然还不如阻塞锁。所以自旋的次数一般控制在一个范围内,例如10,100等,在超出这个范围后,自旋锁会升级为阻塞锁。
公平锁:
按等待获取锁的线程的等待时间进行获取,等待时间长的具有优先获取锁权利
读写锁:
对资源读取和写入的时候拆分为2部分处理,读的时候可以多线程一起读,写的时候必须同步地写。
独占锁:
是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。
乐观锁:
每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。

9.synchronized的优化JDK1.6

https://blog.youkuaiyun.com/sifanchao/article/details/84144141
到了JDK1.6,发生了变化,对synchronize加入了很多优化措施,有自适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在JDK1.6上synchronize的性能并不比Lock差。官方也表示,他们也更支持synchronized,在未来的版本中还有优化余地,所以还是提倡在synchronized能实现需求的情况下,优先考虑使用synchronized来进行同步。

偏向锁(无锁):
大多数情况下锁不仅不存在多线程竞争,而且总是由同一线程多次获得。偏向锁的目的是在某个线程获得锁之后(线程的id会记录在对象的Mark Word中),消除这个线程锁重入(CAS)的开销,看起来让这个线程得到了偏护。
轻量级锁(CAS):
轻量级锁是由偏向锁升级来的,偏向锁运行在一个线程进入同步块的情况下,当第二个线程加入锁争用的时候,偏向锁就会升级为轻量级锁;轻量级锁的意图是在没有多线程竞争的情况下,通过CAS操作尝试将MarkWord更新为指向LockRecord的指针,减少了使用重量级锁的系统互斥量产生的性能消耗。
重量级锁:
虚拟机使用CAS操作尝试将MarkWord更新为指向LockRecord的指针,如果更新成功表示线程就拥有该对象的锁;如果失败,会检查MarkWord是否指向当前线程的栈帧,如果是,表示当前线程已经拥有这个锁;如果不是,说明这个锁被其他线程抢占,此时膨胀为重量级锁。

10.ThreadLocal

Service层里不建议放成员变量,如果要用的话就用ThreadLocal线程本地变量。

11.线程池

Jdk官方提供了常见四个静态方法来创建常用的四种线程.
CachedThreadPool:可缓存
这种线程池内部没有核心线程,线程的数量是有限制的 最大是Integer最大值。
在创建任务时,若有空闲的线程时则复用空闲的线程,若没有则新建线程。
没有工作的线程(闲置状态)在超过了60S还不做事,就会销毁。
适用:执行很多短期异步的小程序或者负载较轻的服务器。
FixedThreadPool :固定长度
该线程池的最大线程数等于核心线程数,所以在默认情况下,该线程池的线程不会因为闲置状态超时而被销毁。
如果当前线程数小于核心线程数,并且也有闲置线程的时候提交了任务,这时也不会去复用之前的闲置线程,会创建新的线程去执行任务。如果当前执行任务数大于了核心线程数,大于的部分就会进入队列等待。等着有闲置的线程来执行这个任务。
适用:执行长期的任务,性能好很多。
SingleThreadPool:单个
有且仅有一个工作线程执行任务
所有任务按照指定顺序执行,即遵循队列的入队出队规则。
适用:一个任务一个任务执行的场景。
ScheduledThreadPool:可调度
这个线程池有点像是CachedThreadPool和FixedThreadPool 结合了一下。

12 自定义线程池ThreadPoolExecutor

方法参数:
corePoolSize:核心线程数(最小存活的工作线程数量)
maxPoolSize:最大线程数
keepAliveTime:线程存活时间,线程的空闲时间超过了keepAliveTime就会销毁
timeUnit:存活时间的时间单位
workQueue:阻塞队列,用来保存等待被执行的任务(
①synchronousQueue:这个队列比较特殊,它不会保存提交的任务,而是将直接新建一个线程来执行新来的任务;
②LinkedBlockingQueue:基于链表的先进先出队列,如果创建时没有指定此队列大小,则默认为Integer.MAX_VALUE;
③ArrayBlockingQueue:基于数组的先进先出队列,此队列创建时必须指定大小)
threadFactory:线程工厂,主要用来创建线程;
handler:表示当拒绝处理任务时的策略(
①AbortPolicy丢弃任务并抛出RejectedExecutionException异常;
②DiscardPolicy丢弃任务,但是不抛出异常;
③DiscardOldestPolicy丢弃队列最前面的任务,然后重新尝试执行任务;
④CallerRunsPolicy由调用线程处理该任务)

一般用自定义的线程池。

mysql,DBA面试题——2024年12月整理 本人整理面试题 阅读详情

相关推荐

【Java面试题汇总】多线程、JUC、锁篇(2026版)

线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC

种一棵树最好的时间是十年前,其次是现在 1万+

线程的生命周期

线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。 新建:就是刚使用new方法,new出来的线程; 就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行; 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能; 阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调

sinat_34620530的博客 528

整理字节腾讯阿里等数百份大厂面经:Java多线程和线程安全最高频面试题及参考答案

AbstractQueuedSynchronizer(AQS)是一个用于构建锁和同步器的框架。它的核心是一个 FIFO(先进先出)的队列,用于管理等待获取同步状态的线程。AQS 维护了一个同步状态(state),这个状态可以用来表示锁是否被获取,获取了几次等信息。例如,在。

大模型大数据攻城狮的专栏 1165

多线程以及锁面试题

线程之间添加依赖

Z1591090的博客 950

java并发锁面试知识

java中的乐观锁与悲观锁,synchronized与ReentrantLock重入锁的说明与比较

航空机载总线网络概述

1.机载总线网络概述 现代战斗机的航空电子系统是航空电子技术经历了半个多世纪的漫长演变和不断进步的结果。航空电子系统结构的每次变化,其核心的机载总线网络技术也不断跨上新台阶,而且每次变革都能使飞机性能得到大幅提升。现代飞机的飞行与作战任务包括起飞、巡航、飞行控制、目标搜索、识别跟踪、火控计算、武器投射、制导、电子战、通信等,都需要航空电子系统承担,航空电子系统是现代战斗机的“大脑”和“神经中枢”,机载总线网络则是其关键的“神经网络”。在机载通讯领域发展过程中,具有代表性的典型总线有ARINC429、1553

qq_41854911的博客 1万+

常见面试题之线程中并发锁(二)

什么是AQS?ReentrantLock的实现原理?synchronized和Lock有什么区别 ?死锁产生的条件是什么?如何进行死锁诊断?导致并发程序出现问题的根本原因是什么?Java并发编程三大特性:原子性、可见性、有序性。

时代各有不同,青春一脉相承。 317

【自动驾驶】汽车智能驾驶计算芯片

本文介绍汽车智能驾驶计算芯片的软硬件要求、 可靠性和安全性要求、 性能要求,和相应的试验方法。除了用于汽车智能驾驶, 其他领域的计算芯片可参照执行。

Mr.Cssust的博客 2631

并发编程44题(含答案)

1、并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。 实现可见性的方法: synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见...

weixin_42034166的博客 3633

ArduSub深度调参指南:如何让水下机器人像鱼一样稳定游动

本文深入探讨了ArduSub水下机器人的深度调参策略,旨在解决ROV在水下晃动、响应迟钝等问题。文章系统解析了级联PID控制逻辑,并针对静水与水流环境,提供了具体的深度保持与姿态控制调参方法、实战日志分析技巧以及异常振荡处理方案,帮助用户实现水下机器人稳定、流畅的游动性能。

CAT789的专栏 372

FPGA实现Gardner环定时同步:Verilog代码与Testbench实战解析

本文深入解析了在FPGA上实现Gardner环定时同步的完整过程,详细阐述了其非数据辅助的定时误差检测原理。通过Verilog代码实战,展示了内插滤波器、定时误差检测器、环路滤波器和数控振荡器等核心模块的设计,并提供了完整的Testbench验证方法,帮助开发者解决数字通信系统中的时钟同步难题。

gpt4scribbler的博客 576

最新Java 基础常见面试题整理

而对于公平锁,当一个线程释放锁时,它会检查同步队列的头部是否有等待的线程,如果有,则将该线程从队列中移除并允许它获取锁。需要注意的是,虽然InheritableThreadLocal提供了父子线程之间的值传递,但它也可能导致一些意想不到的问题,尤其是在复杂的线程模型(如线程池)中。在非公平锁的实现中,当锁被释放时,任何正在等待获取锁的线程都有机会立即获取锁,而不考虑它们等待锁的顺序。但是,由于它需要在等待队列中维护线程的顺序,并可能需要更复杂的调度机制,因此其性能可能略低于非公平锁。

2401_89221445的博客 983

【计算机组成原理实验】状态机实验

理解“状态机”概念,掌握“状态机”思想描述时序系统。通过下列三种基于D触发器的计数器结构,构建状态机的状态转移电路:环形计数器、扭环计数器和条件判断的扭环计数器。基于“状态机”原理,设计一个“交通灯”系统:控制红黄绿信号灯按照以下顺序循环点亮:“绿 黄 红 绿 ……”,红灯、绿灯和黄灯的亮灯持续时间可以通过拨码开关独立设置。红灯和绿灯是持续亮灯模式,黄灯则是闪烁亮灯模式。

Rover_jb的博客 1332

java线程池的面试题_献给准备面试的你,Java线程and线程池面试题小结

最近这几天一直在整理Java相关的面试题,“金九银十”是求职的最佳时间,但是现在的“银十”也已经过去了一半的时间,相信现在还在为面试四处奔波的小伙伴已经很疲惫了吧,下面就来减轻你负担,Java线程和线程池相关的面试题整理给大家,减轻你准备面试的负担。丑话说在前面,我“丑”我先说,嘿嘿。因为篇幅有限,所以这次的文章不会包含面试题的所有的内容,在这里求大家点一波关注啦!以后会持续更新哒!1、为什么用线...

weixin_42140716的博客 1212

手把手教你学PCIE(11.3)--pcie的认证和合规性测试

PCIe 设备的认证和合规性测试是确保设备正常工作和达到预期性能的关键步骤。通过使用 PCI-SIG 提供的测试工具和第三方测试工具,可以全面评估 PCIe 设备的物理层、链路层、事务层和互操作性,确保设备符合行业标准和规范。

MHD0815的博客 1360

Microsemi Libero系列教程(一)——Libero开发环境介绍、下载、安装与注册

前言 相比与Xilinx和Altera在国内的市场,Microsemi的FPGA在国内应用很少很少,网上几乎没有详细的教程,刚开始使用时,遇到了各种问题,自己也走了不少弯路。本系列教程以Libero V11.8.2.4,SmartFusion系列A2F200M3F FPGA芯片为例,将详细介绍Libero SoC软件的基本使用,及使用过程中遇到一些问题的解决方法。 Libero 简介 关于Lib...

whik1194的博客 3万+

synchronized优化手段:锁膨胀、锁消除、锁粗化和自适应自旋锁

如下伪代码所示:// 伪代码:加锁操作i < 10;i++) {// 伪代码:解锁操作。

2301_79055239的博客 1097

基于Python的新闻聚合与推荐系统:抓取多新闻网站内容并根据用户兴趣进行个性化推荐

本文介绍了如何使用Python构建一个新闻聚合与推荐系统,涵盖了从新闻数据抓取、用户兴趣建模到推荐算法实现的全过程。通过爬虫技术抓取新闻网站内容,使用TF-IDF、Word2Vec等算法进行内容分析,并通过推荐算法向用户推送个性化的新闻,最终帮助用户快速获取自己感兴趣的信息。你可以根据具体需求,进一步扩展和优化系统。例如,加入更多的推荐算法、优化爬虫的抓取效率、增强前端展示的互动性等。通过本文的指导,您应该能够构建一个完整的新闻聚合与推荐系统,并为用户提供个性化的新闻推荐服务。

2201_76125261的博客 1515

高频面试题整理(二)

非常重要的原则,mysql会一直向右匹配直到范围查询(<,>,between,like)就停止匹配,比如a=3,b=4, and c>5 and d=6 ,建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则可以用到。线程A调用线程B的stop方法,去停止线程B,但线程A其实并不知道线程B的具体执行情况,这种突然的停止动作会导致线程B的一些清理工作无法完成,还有就是执行stop方法后,线程B会马上释放自己的锁,这样有可能会引发数据不同步的问题。

程序员波特 999

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

2024年最全全网最硬核的 synchronized 面试题深度解析,java排序面试题

说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。推荐一份Java架构之路必备的学习笔记,内容相当全面!!!成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?

2401_84585462的博客 436

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java多线程 北风_Java线程面试题汇总(二)

27) 如何避免死锁?Java多线程中的死锁死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足以下四个条件:互斥条件:一个资源每次只能被一个进程使用。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完...

weixin_32021363的博客 155

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java多线程常见场景,挥泪整理面经

前言 最其实不管什么时候,找工作都跑不了面试。目前很多小编都做了面试手册了,那就是别人家的孩子都有糖了,作为一个自觉的小编,必须搞。 容我先絮叨一下,制作这个面试手册差不多花了3个多星期时间,过程还是比较磨人的,但是也很期待。要是因为我做的手册,帮助到了大家,那就真的开心啊!这就是这篇文章的目的,**帮你搜集了大量的面试题,已经整理成了一个Java面试手册PDF,《互联网面试2400页》,目前有65份PDF,共有2400多页,**后续还会不断的完善更新。 直接进入正题,由于pdf文档里的细节内容实在过多所

m0_56830725的博客 518

JAVA基础面试题复习整理(自用记录,持续更新)

面试题复习

heguoqin123的博客 2239

Java 面试题及答案整理(2025 年金九银十版,持续更新)

每个程序员心中都有一个大厂梦,无论是阿里还是腾讯,对于程序员的技术要求都是比较高的,抛开学历不谈,你的技术水平是否达到了阿里的标准和要求?如果你与其他同行存在着较大的技术差距,而且还没有改变现状的想法,那么被市场所淘汰,只是时间问题。所以,不管你是否想要进入大厂,或是想要拥有一份满意的薪资,都需要认真对待自己。

m0_46995061的博客 698

2020年最新Java并发编程73道面试题及答案

1、在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 唯一的区别是判断虚拟机(JVM)何时离开,Daemon是为其他线程提供服务,如果全部的User Thread已经撤离.

AI乔治 1671

java高级工程师面试题_java高级工程师面试题及答案解析

存储数据的字符数组没有被final修饰,说明值可以改变,抽象类AbstractStringBuilder内部都提供了一个自动扩容机制,当发现长度不够的时候(初始默认长度是16),会自动进行扩容工作,扩展为原数组长度的2倍加2,创建一个新的数组,并将数组的数据复制到新数组,所以对于拼接字符串效率要比String要高。String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而。GC,加大老年代可调1:1,但是要给老年代预留三分之一的空间。

geejkse_seff的博客 576
上一篇: 设计模式和框架自整理面试题
下一篇: GIT中文语言包TortoiseGit-LanguagePack安装闪退解决方法
鸿君
博客等级 码龄6年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值