tips:该方法无法直接掩盖键盘输入的密码,只能实现初步隐藏
线程1:
public class EraserThread extends Thread {
private boolean active;
private String mask;
public EraserThread() {
this('*');
}
public EraserThread(char maskChar) {
active = true;
mask = "\010" + maskChar;
}
//停止线程时设定为false
public void setActive(boolean active) {
this.active = active;
}
public boolean isActive() {
return active;
}
//重新定义run()方法
public void run() {
while(isActive()) {
System.out.print(mask);
try {
//暂停目前的线程50ms
Thread.currentThread().sleep(50);
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
主线程:
import java.util.Scanner;
public class EraserThreadDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print("输入名称:");
String name = scanner.next();
System.out.print("输入密码:");
//启动Eraser线程
EraserThread eraserThread = new EraserThread('#');
eraserThread.start();
String password = scanner.next();
eraserThread.setActive(false);
if("aaa".equals(name) && "123".equals(password)) {
System.out.println("欢迎 aaa");
break;
}
else {
System.out.printf("%s,名称或密码错误,请重新输入! %n",name);
}
}
}
}