Java面试题(每天10题)-------连载(31)

news2024/11/18 7:35:32

多线程篇

注:今天只更新四题,明天就换别的了

1、concurrent包下有哪些类?

ConcurrentHashMap、Future、FutureTask、AtomicInteger...

2、线程a、b、c、d运行任务,怎么保证当a、b、c线程执行完再执行d线程?

1 CountDownLatch类
⼀个同步辅助类,常⽤于某个条件发⽣后才能执⾏后续进程。给定计数初始化 CountDownLatch ,调⽤ countDown ()⽅法,在计数到达零之前,await ⽅法⼀直受阻塞。
重要⽅法为 countdown ()与 await ();
2 join⽅法
将线程 B 加⼊到线程 A 的尾部,当 A 执⾏完后 B 才执⾏。
public class ThreadSerialize {
    public static void main(String[] args) throws Exception {
        Th t = new Th("t1");
        Th t2 = new Th("t2");
        t.start();
        t.join();
        t2.start();
    }
}
3 notify wait ⽅法, Java 中的唤醒与等待⽅法,关键为 synchronized 代码块,参数线程间应相同,也常⽤ Object 作为参数。

3、高并发系统如何进行性能优化?如何防止库存超麦?

1 、⾼并发系统性能优化:
优化程序,优化服务配置,优化系统配置
  1. 尽量使⽤缓存,包括⽤户缓存,信息缓存等,多花点内存来做缓存,可以⼤量减少与数据库的交互,提⾼性能。
  2. jprofiler等⼯具找出性能瓶颈,减少额外的开销。
  3. 优化数据库查询语句,减少直接使⽤hibernate等⼯具的直接⽣成语句(仅耗时较⻓的查询做优化)。
  4. 优化数据库结构,多做索引,提⾼查询效率。
  5. 统计的功能尽量做缓存,或按每天⼀统计或定时统计相关报表,避免需要时进⾏统计的功能。
  6. 能使⽤静态⻚⾯的地⽅尽量使⽤,减少容器的解析(尽量将动态内容⽣成静态html来显示)。
  7. 解决以上问题后,使⽤服务器集群来解决单台的瓶颈问题。
2 、防⽌库存超卖:
  1. 悲观锁在更新库存期间加锁,不允许其它线程修改;
    数据库锁:select xxx for update
    分布式锁;
  2. 乐观锁:使⽤带版本号的更新。每个线程都可以并发修改,但在并发时,只有⼀个线程会修改成功,其它会返回失败。
    redis watch:监视键值对,作⽤时如果事务提交exec时发现监视的监视对发⽣变化,事务将被取消。
  3. 消息队列:通过 FIFO 队列,使修改库存的操作串⾏化。
  4. 总结:总的来说,不能把压⼒放在数据库上,所以使⽤ "select xxx for update" 的⽅式在⾼并发的场景下是不可⾏的。FIFO 同步队列的⽅式,可以结合库存限制队列⻓,但是在库存较多的场景下,⼜不太适⽤。所以相对来说,我会倾向于选择:乐观锁 / 缓存锁 / 分布式锁的⽅式。 

4、线程池的参数配置,为什么Java官方提供工厂方法给线程池?

 1、线程池简介:

2、核心参数:

3 、⼯⼚⽅法作⽤: ThreadPoolExecutor 类就是 Executor 的实现类,但 ThreadPoolExecutor 在使⽤上并不是那么⽅便,在实例化时需要传⼊很多歌参数,还要考虑线程的并发数等与线程池运⾏效率有关的参数,所以官⽅建议使⽤Executors ⼯程类来创建线程池对象。

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

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

相关文章

AdaBoost:提升机器学习的力量

一、介绍 机器学习已成为现代技术的基石,为从推荐系统到自动驾驶汽车的一切提供动力。在众多机器学习算法中,AdaBoost(Adaptive Boosting的缩写)作为一种强大的集成方法脱颖而出,为该领域的成功做出了重大贡献。AdaBoo…

企业设备巡检的痛点和解决方案

在设备巡检过程中,企业常面临多种痛点。首先,信息管理不足是一个关键问题,企业往往缺乏全面、准确的设备信息记录,这导致巡检工作缺乏针对性和效率。其次,巡检流程的非标准化使得巡检结果出现不一致,重要的…

HTML5+CSS3小实例:炫酷的流边按钮

实例:炫酷的流边按钮 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="wid…

妙手ERP本期功能优化:TikTok创建折扣活动可默认生成活动名称和时间、Shopee利润明细新增字段等

为了给卖家朋友带来更好的使用体验&#xff0c;更高效地运营跨境店铺&#xff0c;妙手ERP在上周优化了以下多项功能。 01、产品模块优化 全平台 - 批量编辑平台SKU增加翻译功能 TikTok - 创建折扣活动时&#xff0c;可默认生成活动名称和时间 02、订单模块优化 全平台 - 扫…

CleanMyMac X“断网激活”真的可以吗?

CleanMyMac X帮助Mac系统进行垃圾清理&#xff0c;清除多余的缓存、应用程序等&#xff0c;在提高工作效率上起了很大的作用。但是随着对软件的需求不断增加&#xff0c;很多人开始研究通过捷径破解正版软件&#xff0c;但是是否能成功呢&#xff1f;今天小编就为大家揭开“断网…

哪些方面的应用适合博捷芯双轴半自动划片机?

博捷芯BJX3666系列双轴半自动划片机可以应用于以下领域&#xff1a; 1. 集成电路制造&#xff1a;在集成电路制造中&#xff0c;划片机可以用来将芯片从晶圆上切割下来&#xff0c;以便进行封装和测试。此外&#xff0c;还可以用来对芯片进行划片分离加工&#xff0c;以得到所需…

格式工厂——万能格式转换器

很多时候&#xff0c;大家从网络上下载的文件不一定是自己想要的类型&#xff0c;比如flv等视频文件&#xff0c;而强行改文件后缀名只会造成文件格式错误&#xff0c;无法打开&#xff1b;而很多文件的格式并不能轻易转换&#xff0c;且很多渠道都需要收费。今天介绍的这款For…

【linux】centos7 yum安装nginx

查看系统中是否已安装 nginx 服务 yum list | grep nginx查看nginx运行进程 ps -ef | grep nginx添加源 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装Nginx yum install -y nginx 查看nginx安装目录 find …

【23真题】懒得出题!连续两年试卷相同!

连续两年出题一样&#xff0c;老师都懒得出题的院校又被我抓到一所&#xff01;&#xff08;上次是天津工业22和21年一模一样&#xff09;&#xff0c;这次沈阳工业的老师多多少少改了几个数&#xff0c;但是也大差不差&#xff0c;考这所院校&#xff0c;猛刷真题&#xff0c;…

Elasticsearch的配置学习笔记

文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口&#xff0c;Elasticsearch是用Java语言开发的。 关于Elasticsearch系列笔记&#xff0c;主要从Elasticsearch的配置、核心组件、架构设计、使…

黔院长 | 《黄帝内经》——气厥论!

当我们体内的寒热之气厥逆&#xff0c;也就是气息上逆犯冲&#xff0c;就会为患多端&#xff0c;导致寒热之气在体内不断传变&#xff0c;我们的五脏六腑也跟着产生疾病。 肾得寒气&#xff0c;传给脾气&#xff0c;脾无法将水谷之精输养全身&#xff0c;就会导致人言语无力&a…

高德地图系列(四):vue项目利用高德地图实现车辆的路线规划

目录 第一章 效果图 第二章 源代码 第一章 效果图 小编该案例主要实现的两个点的思路&#xff1a;1、有两个正常的经纬度就可以在地图中绘制出汽车从起点到终点的路线规划&#xff1b;2、当用户经纬度发生变化时&#xff0c;用户可以通过某个操作&#xff0c;或者程序员通过…

VS2017新建.hpp文件

目录 1、新建h文件的方法&#xff1a;2、新建对用的cpp文件&#xff1a;3、在main.cpp中调用 1、新建h文件的方法&#xff1a; 2、新建对用的cpp文件&#xff1a; 3、在main.cpp中调用 参见大佬博客

PHP 论文发表管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 PHP 论文发表管理系统是一套完善的web设计系统mysql数据库 &#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php 论文发表系统1 代码 https://download.csdn.net/download/qq_412213…

pyCharm新建项目

1.新建界面点击Create New Project。 或点击File->New Project... 2.选择Pure Python后&#xff0c;如图选择路径。 Location的地址一致&#xff0c;点击Create。 3.等待新建成功后&#xff0c;在新建的项目名字右击&#xff0c;如下图可以选择新建文件夹、python包和python…

WPF下实现拖动任意地方都可以拖动窗口

首先在xaml中添加事件 <Window PreviewMouseLeftButtonDown"Window_PreviewMouseLeftButtonDown"PreviewMouseMove"Window_PreviewMouseMove"PreviewMouseLeftButtonUp"Window_PreviewMouseLeftButtonUp"/>然后脚本输入 Point _pressedP…

VS Code打造Rust的开发环境

文章目录 rust-analyzerCodeLLDB Rust据说是一门永远也不会发生内存错误的语言&#xff0c;并且因其反人类的学习曲线&#xff0c;而长期占据编程鄙视链的最顶端。而且就连微软都准备把Windows挪到Rust上面&#xff0c;可见其受欢迎程度。 rust-analyzer 在插件栏中直接搜索r…

科特迪瓦市场开发攻略,收藏一篇就够了

科特迪瓦是非洲西部的一个国家&#xff0c;被誉为西非明珠&#xff0c;跟中国经济联系紧密&#xff0c;很多产品依赖进口&#xff0c;市场潜力比较大。今天就来给大家介绍一下科特迪瓦的市场开发攻略&#xff0c;文章略长&#xff0c;大家点赞收藏关注慢慢看。 文章目录&#…

ssm+vue的物流配送管理系统(有报告)。Javaee项目,ssm vue前后端分离项目

演示视频&#xff1a; ssmvue的物流配送管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项目介…