java - System.console.readPassword() 要求用户在读取密码之前按回车
问题描述
通过控制台类读取输入时出现问题。
readPassword() 方法在控制台中按下回车键之前不会开始读取,并将继续在控制台中显示字符。
后用户在控制台输入回车键,读取密码开始从控制台读取字符。
我想知道这是否与通过 ReadPassword() 函数中的同步关键字获取控制台中的锁有关。
ReadPassword 函数的代码 -
public char[] readPassword(String fmt, Object ... args) {
char[] passwd = null;
synchronized (writeLock) {
synchronized(readLock) {
try {
echoOff = echo(false);
} catch (IOException x) {
throw new IOError(x);
}
IOError ioe = null;
try {
if (fmt.length() != 0)
pw.format(fmt, args);
passwd = readline(true);
} catch (IOException x) {
ioe = new IOError(x);
} finally {
try {
echoOff = echo(true);
} catch (IOException x) {
if (ioe == null)
ioe = new IOError(x);
else
ioe.addSuppressed(x);
}
if (ioe != null)
throw ioe;
}
pw.println();
}
}
return passwd;
}
解决方案
推荐阅读
- arrays - 合并两个对象数组
- javascript - 不活动后的 Javascript 重定向/注销(带有模式弹出窗口)
- sql - 仅从oracle sql中的给定日期提取日期
- angular - 在 Springboot 服务器和 Angular 应用上使用 URL 重写时出现 MIME 类型错误
- sql - Tableau 中的 ROW_NUMBER 和 PARTITION BY
- python - 无法在 webhook 模式下部署 aiogram python bot
- python - python:迭代时增加循环
- linux - Eclipse 在预构建中定义构建变量
- windows-10 - Windows 上的 Pytorch:numworkers 的数据加载器问题
- python - 将颜色条与 GeoAxes 子图边缘对齐