面试篇:杂乱篇

news2024/10/9 0:42:37

 String s = " ";

1. String类的常用方法有哪些?

  1. s.length():               返回字符串长度
  2. s.substring():          截取字符串
  3. s.split():                  分割字符串
  4. s.equlas():              字符串比较
  5. s.chatAt():               返回指定索引处的字符

2. 说一下synchronized底层实现原理

答:它底层是由monitor实现的,monitor是jvm级别的对象(使用c++编写的),线程获得锁需要用对象关联monitor。  monitor有三个属性:owner, entrylist, waitset.

        其中:owner是关联获得锁的线程,并且只能关联一个线程,而entrylist是关联处于阻塞状态的线程,waitset是关联处于等待状态的线程

3.线程池的七个参数是什么?执行原理是什么?

 答:七个参数:

        1. 核心线程数

        2.最大线程数

        3.线程存活时间

        4.线程存活时间的单位

        5.工作队列

        6.线程工厂

        7.拒绝策略

                        

执行原理:当一个任务来了之后,会先去判断一下核心线程数是否已满,如果没有满,直接添加到工作线程去执行,如果已经满了,则添加到阻塞队列,如果阻塞队列也满了,则判断是否达到最大线程数,如果没达到,则创建临时线程来执行,如果已经达到了最大线程数,那就直接根据拒绝策略来拒绝。

4.线程池有哪些常见的阻塞队列?

BlockingQueue有这几种类型:ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、DelayedWorkQueue。

5. 线程池有哪些种类?

在JUC包下有Excutors类中提供了很多创建连接池的静态方法,常见的有四种:

1. newFixedThreadPool(int nThreads)

特点:

  • 核心线程数 == 最大线程数
  • 阻塞队列使用的是LinkedBlockingQueue
  • 适用于任务数已知,比较耗时的任务

2. newSingleThreadExcutors()

特点:

  • 核心线程数 == 最大线程数 == 1   (单线程)
  • 阻塞队列使用的是LinkedBlockingQueue
  • 适用于按照顺序执行的任务

3. newCachedThreadPool()

特点:

  • 核心线程数 == 0
  • 最大线程数 == Integer.MAX_VALUE
  • 阻塞队列为synchronousQueue
  • 适用于任务数比较密集,而且任务耗时比较短的情况(防止任务太多时,任务耗时太长,创建大量的线程占用内存)

4. newScheduledThreadPool

特点:创建一个可执行延时任务的线程池,支持定时及周期性任务执行

6.谈谈对ThreadLocal的理解

答:1.ThreadLocal可以实现资源对象的线程隔离,让每个线程各用各的资源对象,防止产生线程安全问题

       2.ThreadLocal也实现了线程内的资源共享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络

本改进已融入到 YOLOv5-Magic 框架。 论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 文章目录 HGNetv2网络结构1.1 主干网络1.2 颈部…

Redis监控方案以及相关黄金指标提升稳定性和可靠性

Redis监控方案以及相关黄金指标提升稳定性和可靠性 1. 需要了解的词2. 「基准性能」相关指标2.1 Latency2.2 最大响应延迟2.3 平均响应延迟2.4 OPS(instantaneous_ops_per_sec)2.5 Hit Rate 3. 「内存」相关指标3.1 内存使用量(used_memory)3.2 内存碎片率(mem_fragmentation_r…

npm install node-sass报错

前言 在使用 node-sass 时,你可能会遇到安装 node-sass 时出现各种错误的情况。在本文中,我们将探讨一些常见的 node-sass 安装错误,以及如何解决它们。 无论你是初学者还是有经验的开发者,本文都将为你提供有用的信息和技巧&…

Comfyui插件CLIPSeg应该如何安装

✨背景 GitHub - biegert/ComfyUI-CLIPSeg: ComfyUI CLIPSeg Comfyui-CLIPSeg是一个相对没那么大众的插件,在基于语义分割和自动抠图方面,还是比较实用的一个插件。但是插件安装起来,跟普通的插件安装有亿点不一样,所以很多小朋友…

RUST语言变量与数据类型使用

使用之前了解: fn main() 表示程序入口点 println!("要输出的内容"); 表示格式化输出 变量与常量声明: let 变量:变量类型 变量值;let mut 变量:变量类型 变量值; const 常量:常量类型 常量值 如果 声明时不指定类型,将根据赋值类型自动推导 变量类型参与下…

基于两个单片机串行通信的电子密码锁设计

1.功能 电子号码锁在实际应用中应该有两部分,一部分在外部,有键盘部分和密码显示;另一部分内部,设置密码、显示密码。使用单片机自身带有的串口可以很方便的实现单片机之间的通信,使输入的密码值传送到主机检验是否是…

浙大恩特客户资源管理系统 Quotegask_editAction SQL注入漏洞复现

0x01 产品简介 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。 0x02 漏洞概述 浙大恩特客户资源管理系统 Quotegask_editAction 接口存在 SQL 注入漏洞,攻击者可通过输入恶意 SQ…

[AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步

目录 关键词平台说明背景一、implicit synchronization1.1 Write requests 流程 (NvM_WriteBlock)1.2 Read requests 流程 (NvM_ReadBlock)1.3 Restore default requests 流程 (NvM_RestoreBlockDefaults)1.4 Multi block read requests 流程 (NvM_ReadAll)1.5 Multi block wri…

LangChain入门:12.OutputFixingParser解析器实战

引言 在处理自动化数据解析时,格式错误是常见的问题。本文将展示如何使用OutputFixingParser来自动纠正这些错误,确保数据解析的顺利进行。 问题场景 在解析JSON数据时,如果格式不正确,Python的内建JSON解析器会抛出错误。例如…

逻辑回归(Logistic Regression)详解

逻辑回归(Logistic Regression)是一种常用的统计学习方法,用于解决二分类问题。虽然名字中包含“回归”,但逻辑回归实际上是一种分类算法,而不是回归算法。它的基本原理是使用逻辑函数(也称为Sigmoid函数&a…

【基于HTML5的网页设计及应用】——-正则表达式.

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

Vue2电商前台项目(一):项目前的初始化及搭建

一、项目初始化 创建项目:sudo vue create app 1.项目配置 (1)浏览器自动打开 在package.json文件中,serve后面加上 --open "scripts": {"serve": "vue-cli-service serve --open","buil…

Vue tree自定义滚动条位置

贴一张效果图,我的效果不方便贴出来 实现支持: 1、懒加载 2、普通加载 下面贴关键思想: document有一个获取element元素的方法。 let element document.getElementById(tree); let arr document.querySelectorAll(".nodelModel&quo…

深入Tauri开发——从环境搭建到项目构建

深入Tauri开发——从环境搭建到项目构建 开启你的Tauri桌面应用开发之旅(续) 经过上一篇文章的基础介绍,现在让我们更进一步,详细阐述如何在Windows和macOS平台上顺利搭建Tauri应用所需的开发环境,并指导您从创建项目…

模板匹配——基于模板与基于特征的两种模板匹配对比

概述 在人工智能(AI)的研究领域中,模板匹配不仅是一个重要的研究课题,也是解决图像处理中核心问题——定位兴趣区域的关键方法之一。通过模板匹配,可以准确地识别和定位给定图像中的特定对象。这项技术在对象检测、跟…

Golang | Leetcode Golang题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; func isMatch(s string, p string) bool {m, n : len(s), len(p)matches : func(i, j int) bool {if i 0 {return false}if p[j-1] . {return true}return s[i-1] p[j-1]}f : make([][]bool, m 1)for i : 0; i < len(f); i {f[i] m…

多线程学习-线程安全

目录 1.多线程可能会造成的安全问题 2. static共享变量 3.同步代码块 4.同步方法 5.使用Lock手动加锁和解锁 6.死锁 1.多线程可能会造成的安全问题 场景&#xff1a;三个窗口同时售卖100张电影票&#xff0c;使用线程模拟。 public class MyThread extends Thread{//tic…

windows安装OpenUSD

一、下载OpenUSD git clone https://github.com/PixarAnimationStudios/OpenUSDOpenUSD&#xff0c;原名USD&#xff08;Universal Scene Description&#xff0c;通用场景描述&#xff09;&#xff0c;是由皮克斯动画工作室开发的一种开放数据格式。OpenUSD主要用于在虚拟世界…

Linux-程序地址空间

目录 1. 程序地址空间分布 2. 两个问题 3. 虚拟地址和物理地址 4. 页表 5. 解决问题 6. 为什么要有地址空间 1. 程序地址空间分布 测试一下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/types.h>int ga…

java中Date类,SimpleDateFormat类和Calendar类

Date类 public Date() 创建一个Date对象&#xff0c;代表的是系统当前此刻的日期时间 public Date(long date) Constructs a Date object using the given milliseconds time value. 把时间毫秒值转变成Date日期对象 public void setTime(long date) Sets an existing Date ob…