当前位置: 首页 > news >正文

每日一练,java03

目录

  • 题目
      • wait()、notify()和notifyAll()方法的特性和使用场景
        • wait() 方法
        • notify() 方法
        • notifyAll() 方法
        • 使用场景
      • 注意事项

题目

选自牛客网
1.下面关于JAVA的垃圾回收机制,正确的是( )
A.当调用“System.gc()”来强制回收时,系统会立即回收垃圾
B.垃圾回收不能确定具体的回收时间
C.程序可明确地标识某个局部变量的引用不再被使用
D.程序可以显式地立即释放对象占有的内存

正确答案:B
正确的描述是选项B:“垃圾回收不能确定具体的回收时间”。Java的垃圾回收机制是自动运行的,它负责回收不再使用的对象所占用的内存。然而,垃圾回收的具体触发时间和频率是不确定的,由垃圾回收器根据系统的运行状态自动决定。即使调用了System.gc()方法建议进行垃圾回收,也不能保证垃圾回收会立即执行,这只是一个建议,垃圾回收器可以选择忽略。因此,选项B是正确的。选项A和D的描述与Java垃圾回收机制的实际行为不符,而选项C描述的是可以通过将引用设为null来暗示对象不再使用,但这并不是强制垃圾回收,垃圾回收器仍然会根据自己的策略来决定何时回收这些对象。

2.java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?
A.Hashtable
B.Vector
C.TreeSet
D.LinkedList

正确答案:AB

在Java中,HashtableVector是早期设计的集合类,它们内部的方法是同步的,因此它们是线程安全的。这意味着它们可以在多线程环境中共享而不需要额外的同步措施。然而,TreeSetLinkedList并不提供内置的线程安全保障,它们的方法是非同步的,因此在多线程环境中共享时需要额外的同步控制,或者使用线程安全的包装类,如Collections.synchronizedSet()Collections.synchronizedList(),来包装这些集合,以提供线程安全性。

因此,正确答案是 A 和 B:HashtableVector是线程安全的集合类。


3.下面哪些写法能在 java8 中编译执行()

A.dir.listFiles((File f)->f.getName().endsWith(“.Java”));
B.dir.listFiles((File f)=>f.getName().endsWith(“.Java”));
C.dir.listFiles((_.getName().endsWith(“.Java”)));
D.dir.listFiles( f->f.getName().endsWith(“.Java”));

ad

  1. 形参列表

    • 形参列表定义了Lambda表达式接受的参数。参数类型可以被省略,Java编译器会根据上下文推断它们的类型。
    • 如果Lambda表达式只有一个参数,那么甚至可以省略圆括号。例如,(String s) -> s.length()可以简化为String s -> s.length()
  2. 箭头(→)

    • 箭头是Lambda表达式的固定组成部分,用于分隔形参列表和代码块。它表示从参数到执行代码的转换。
  3. 代码块

    • 代码块包含了Lambda表达式执行的逻辑。如果代码块仅包含一条语句,那么可以省略花括号。
    • 如果代码块中的语句是单一的返回语句,那么return关键字也可以被省略,Lambda表达式会自动返回这条语句的结果。

基于这些规则,选项A和D的Lambda表达式是正确的,它们遵循了正确的语法和结构,能够编译执行。例如:

  • 选项A:dir.listFiles((File f) -> f.getName().endsWith(".Java"));
  • 选项D:dir.listFiles(f -> f.getName().endsWith(".Java"));

这两个选项中,Lambda表达式接受一个File类型的参数,并返回一个布尔值,表示文件名是否以".Java"结尾,这符合listFiles方法需要的过滤器逻辑。


4.以下哪几种方式可用来实现线程间通知和唤醒:( )
A.Object.wait/notify/notifyAll
B.ReentrantLock.wait/notify/notifyAll
C.Condition.await/signal/signalAll
D.Thread.wait/notify/notifyAll
正确答案:AC

wait()、notify()和notifyAll()方法的特性和使用场景

wait()notify()notifyAll()是Java中用于线程间通信的内置方法,它们定义在Object类中,因此适用于所有Java对象。这些方法与同步机制紧密相关,它们必须在同步块或同步方法中被调用,以确保线程安全。

wait() 方法
  • wait()方法允许一个线程放弃对象的锁,并等待直到另一个线程通知该对象锁已被释放。
  • 当一个线程调用对象的wait()方法时,它会立即释放该对象的锁,并进入到该对象的等待集合(wait set)中。
  • 调用wait()方法必须在同步控制块或同步方法中进行,以避免违反锁的独占性。
notify() 方法
  • notify()方法用于唤醒在同一个对象的等待集合中等待的单个线程。
  • 调用notify()方法的线程必须持有该对象的锁,但在调用后会立即释放锁,使得等待集合中的一个线程可以尝试重新获取锁。
  • 被唤醒的线程将继续执行,但它能否成功获取锁取决于锁的可用性和其他线程的竞争。
notifyAll() 方法
  • notifyAll()方法用于唤醒在同一个对象的等待集合中等待的所有线程。
  • notify()方法类似,调用notifyAll()的线程必须持有该对象的锁,并在调用后释放锁。
  • 所有等待集合中的线程都会被唤醒,但它们仍然需要竞争锁以继续执行。
使用场景
  • wait()notify()notifyAll()通常用于实现生产者-消费者问题、读写锁、条件变量等多线程同步场景。
  • 这些方法可以帮助线程在某个条件尚未满足时暂停执行,并在条件满足时恢复执行,从而实现线程间的协作。

注意事项

  • 在使用wait()notify()notifyAll()时,应当小心避免死锁和竞态条件。
  • 通常建议在等待条件前使用循环检查来确认条件是否真的已经满足,以防止虚假唤醒(spurious wakeup)。
  • 这些方法在多线程编程中是非常强大的工具,但也需要谨慎使用,以确保程序的正确性和性能。

3.以下代码输出的是:
public class SendValue{
public String str=“6”;
public static void main(String[] args) {
SendValue sv=new SendValue();
sv.change(sv.str);
System.out.println(sv.str);
}
public void change(String str) {
str=“10”;
}
}

A.6
B.10
C.都不对
D.16

正确答案:A
代码中的change方法接受一个String类型的参数str,并将其修改为"10"。然而,这个方法内部的str变量是局部变量,它与类的成员变量str是两个不同的引用。因此,即使局部变量str的值被修改,类的成员变量str的值仍然保持不变,其值为"6"。所以,当打印出sv.str的值时,输出结果是6。这说明Java中字符串是不可变的,修改字符串实质上是创建了一个新的字符串对象,而不会改变原始字符串对象的值。因此,正确答案是A.6。

相关文章:

每日一练,java03

目录 题目wait()、notify()和notifyAll()方法的特性和使用场景wait() 方法notify() 方法notifyAll() 方法使用场景 注意事项 题目 选自牛客网 1.下面关于JAVA的垃圾回收机制,正确的是( ) A.当调用“System.gc()”来强制回收时,系…...

【机器学习】深入理解损失函数(Loss Functions)

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 深入理解损失函数(Loss Functions)什么是损失函数?常见损失函数类型1. 均方误差…...

python实现特征检测算法3

python实现SIFT(尺度不变特征变换)算法、SURF(Speeded Up Robust Features)算法 1.SIFT算法详解算法步骤Python实现详细解释优缺点应用领域2.SURF算法详解算法步骤Python实现详细解释SURF算法原理优缺点应用领域尺度不变特征变换(SIFT,Scale-Invariant Feature Transform…...

软件更新的双刃剑:从”微软蓝屏”事件看网络安全的挑战与对策

引言 原文链接 近日,一场由微软视窗系统软件更新引发的全球性"微软蓝屏"事件震惊了整个科技界。这次事件源于美国电脑安全技术公司"众击"提供的一个带有"缺陷"的软件更新,如同一颗隐形炸弹在全球范围内引爆,…...

Redis 主从搭建

Redis主从搭建 7.2.5 文章目录 一. 同主机搭建Redis主从1. 环境介绍2. 环境前准备工作3. 安装 Redis 7.2.54. redis 配置修改并且启动4.1 修改配置文件4.2 编写启动脚本 5. 开启主从5.1 开启5.2 主库实例查看主从信息5.3 从库实例查看主从信息5.4 验证主从配置是否生效 6. 解除…...

LeetCode 129, 133, 136

文章目录 129. 求根节点到叶节点数字之和题目链接标签思路代码 133. 克隆图题目链接标签思路代码 136. 只出现一次的数字题目链接标签思路代码 129. 求根节点到叶节点数字之和 题目链接 129. 求根节点到叶节点数字之和 标签 树 深度优先搜索 二叉树 思路 由于本题需要 从…...

macOS 环境Qt Creator 快捷键

在 macOS 环境下,Qt Creator 是一个流行的集成开发环境(IDE),用于开发 Qt 项目。下面是一些常用的快捷键和操作技巧,帮助你更高效地使用 Qt Creator 进行项目开发和管理: 在 macOS 中,Cmd 键 四…...

【C# WInForm】将TextBox从输入框设置为文本框

1.需求情形: textbox作为最常用的控件之一,通常是用来输入文本信息或者显示文字,但是如果要在界面中显示大段文本,一个带有边框、可选中的文本样式似乎不合适。像这样: 我需要的是这段文字不仅能跨行,而且…...

minio 服务docker配置

用minio docker配置了一个服务,分享链接始终是127.0.01开始的, 改成docker的host的ip则提示签名不匹配, 好在这个文件主要是用来下载的,所以可以通过设置bucket的匿名访问权限来实现下载; 这样不需要后面的地址参数就…...

开源模型应用落地-LangChain高阶-智能体探究-自定义agent(五)

一、前言 大模型具有非常强大的功能,可以解答疑问、撰写报告和文档、总结内容、进行翻译等各种日常工作任务。然而,大模型还可以应用于更多的场景,发挥出更强大的作用。 通过智能体,我们可以实现许多有价值的事情,比如:在日常生活中,我们能借助智能体实现智能家居的自动化…...

16_网络IPC4-数据传输

send() 用于流式套接字 向SOCKET发送数据 。 Socket 只是通信节点,通信之前需要连接,即发送端发送之前 需要知道对端的地址,才能找到对端的socket节点,才能发送成功。而接收端不同,接收函数 如 recv () 不需要一定知道…...

怎样做好仓库管理工作?如何利用仓库管理系统进行有效管理?

我前前后后跑遍了十几家仓储设备公司,跟那些制造业的朋友们聊了个痛快,从他们那儿学到了不少仓库管理的实践方法。 回来自己整理了一套仓库管理更高效的实用方法,现在就来跟大家伙儿聊聊仓库管理中那些常见问题,以及我是怎么琢磨…...

PHP-显示所有错误信息

1 需求 2 接口 3 示例 要在 PHP 中显示所有错误信息,你可以通过修改 php.ini 配置文件或在你的 PHP 脚本中设置错误报告级别来实现。以下是两种常见的方法: 方法一:修改 php.ini 配置文件 找到你的 php.ini 文件。这个文件的位置取决于你的 P…...

js修改hash的方法

关键: window.onhashchange (event) > {// do something }hash变化包括 js修改hash手动修改url的hash浏览器前进、后退 js修改hash: location.href "#user";在vue-router等路由组件中如何实现history模式呢? 关键函数:hi…...

机械学习—零基础学习日志(高数10——函数图形)

零基础为了学人工智能,真的开始复习高数 函数图像,开始新的学习!本次就多做一做题目! 第一题: 这个解法是有点不太懂的了。以后再多研究一下。再出一道题目。 张宇老师,比较多提示了大家,一定…...

Godot游戏制作 03世界构建1.0版

在game场景,删除StaticBody2D节点,添加TileMap节点 添加TileSet图块集 添加TileSet源 拖动图片到图块,自动创建图块 使用橡皮擦擦除。取消橡皮擦后按住Shift创建大型图块。 进入选择模式,TileMap选择绘制,选中图块后在…...

MySql性能调优05-[sql实战演练]

sql实战演练 行列转换行列式转换第一题【列转行】第二题【列转行】 having的使用找到表中,名字重复的项有数据表employee,包含如下字段id、name、department、age,编写SQL,找到不与其他人同龄的年纪最大的员工的年龄有数据表emplo…...

go-kratos 学习笔记(1) 安装

简介: Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。 使用步骤: 安装cli工具 go install github.com/go-kratos/kratos/cmd/kratos/v2latest 创建项目 通过 kratos 命令创建项目模板 # 国内拉取失败可使用gitee源 krat…...

蚂蚁集团推出EchoMimic:能通过音频和面部标志生成逼真的肖像动画视频

蚂蚁集团最近推出了一项名为EchoMimic的新技术。能通过音频和面部标志生成逼真的肖像动画视频,让你的声音和面部动作被完美复制到视频中,效果自然如照镜子。 EchoMimic不仅可以单独使用音频或面部标志点生成肖像视频,也可以将两者结合&#…...

量化机器人对市场趋势的反应速度

量化机器人对市场趋势的反应速度在当前金融市场中具有重要意义。随着算法和大数据技术的发展,量化机器人通过先进的计算能力和实时数据分析,能够迅速捕捉市场变化,做出及时的交易决策。这种快速反应能力,不仅提高了交易效率&#…...

基于CYBER-VISION零号协议构建智能技术文档翻译与摘要系统

基于CYBER-VISION零号协议构建智能技术文档翻译与摘要系统 1. 引言 对于很多开发者来说,阅读英文技术文档是件挺头疼的事。尤其是遇到一些前沿的开源项目,官方文档全是英文,里面还夹杂着大量的专业术语和复杂的配置说明。有时候&#xff0c…...

OpenClaw快速体验:30分钟玩转Qwen3.5-9B基础自动化

OpenClaw快速体验:30分钟玩转Qwen3.5-9B基础自动化 1. 为什么选择OpenClawQwen3.5组合? 去年冬天第一次接触OpenClaw时,我正被重复性的文件整理工作困扰。作为技术博主,每天需要从十几个渠道收集行业动态,手动归类到…...

物联网水产养殖监控系统:智能联动,实现养殖设备自动调控

一、应用背景 水产养殖是我国农业经济的重要组成部分,传统养殖模式长期依赖人工巡检、经验判断,存在诸多难以破解的行业痛点,严重制约养殖效益与产业可持续发展。随着物联网、大数据、边缘计算、无线通信技术的成熟,搭建智能化、数…...

AI辅助开发中的Codec VAD优化实践:从算法原理到工程落地

在实时音视频应用里,语音活动检测(VAD)就像个“守门员”,负责精准判断当前有没有人在说话。这个判断准不准、快不快,直接关系到后续的编码、传输乃至降噪、唤醒等一系列流程的效率。尤其在AI辅助开发的框架下&#xff…...

Qwen3-ASR-1.7B保姆级教程:解决‘识别结果不准确’的5类高频问题

Qwen3-ASR-1.7B保姆级教程:解决‘识别结果不准确’的5类高频问题 1. 引言:为什么你的语音识别总是不准? 你是不是遇到过这样的情况:用语音识别软件录音,结果出来的文字乱七八糟,完全不是你说的内容&#…...

一种路径优化和速度优化算法实现(仿照百度Apollo方案),只提供代码,有相关的readme文...

一种路径优化和速度优化算法实现(仿照百度Apollo方案),只提供代码,有相关的readme文件。 自动驾驶 ,路径优化,速度优化,pnc。 的代码最近在折腾自动驾驶的路径规划模块,发现实际落地…...

ChatTTS在政务热线场景落地:拟真语音提升市民服务体验真实案例

ChatTTS在政务热线场景落地:拟真语音提升市民服务体验真实案例 1. 项目背景与价值 政务热线是政府与市民沟通的重要桥梁,但传统语音系统存在明显痛点:机械化的语音播报缺乏人情味,长时间等待的提示音让市民感到烦躁,…...

Chatbot Arena排行榜单实战指南:从数据采集到模型优化

Chatbot Arena排行榜单实战指南:从数据采集到模型优化 在构建和优化自己的对话AI时,我们常常面临一个核心问题:如何客观、全面地评估它的性能?闭门造车式的测试往往带有主观偏见,而Chatbot Arena这类公开的排行榜单&a…...

Comsol热流耦合拓扑优化:最大化放热量与功率耗散的探索

Comsol热流耦合拓扑优化。 目标函数采用最大化放热量和功率耗散。在工程领域,热流耦合问题一直是研究的重点,尤其是如何通过拓扑优化来实现特定目标,比如最大化放热量和功率耗散,这对于提高系统性能至关重要。而Comsol作为一款强大…...

2026 年智慧工地排名榜单第一|山东建安物联科技有限公司

2026 年度智慧工地综合实力榜单正式揭晓,山东建安物联科技有限公司(大建安)凭借标准引领、技术实力与标杆项目,登顶全国榜首,成为行业公认的智慧工地领军企业。公司打造的中建八局烟台崆峒胜境项目,获评国家…...