-
生成一个长度是3的随机字符串,把这个字符串当作 密码
-
创建一个破解线程,使用穷举法,匹配这个密码
-
创建一个日志线程,打印都用过哪些字符串去匹配,这个日志线程设计为守护线程
package multiplethread;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
import java.util.LinkedList;
public class Decoder extends Thread{
// 获取随机字符串
public static String getRandomString(int length){
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random r =new Random();
StringBuffer sb = new StringBuffer();
for(int i=0;i<length;i++){
int number = r.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
public static void main(String[] args){
String password = getRandomString(3);
System.out.println("初始密码是:"+password);
List<String> strcontents = new ArrayList<>();
Thread t1 = new Thread(){
public void run(){
while(true){
String recover = getRandomString(3);
strcontents.add(recover);
if(recover.equals(password)){
System.out.println("匹配成功,密码是:"+recover);
break;
}
}
}
};
Thread log = new Thread(){
public void run(){
try{
while(true){
String str = strcontents.remove(0);
if(null==str){
System.out.println("没有获取到内容,休眠1秒");
Thread.sleep(1);
}
else{
System.out.println("穷举字符串为:"+str);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
};
log.setDaemon(true);
t1.start();
log.start();
}
}
在打印日志时不知道出现了点啥问题