题目要求:
编写程序创建5个线程,分别显示5个不同的字符串。用继承Thread类以及实现Runnable接口的两种方式实现。
利用继承Thread类实现:
import java.util.Random;
public class Test {
public static void main(String[] args) {
//ShowStr st=new ShowStr();
/*
String str=st.getRandomString(3);
System.out.println(str);*/
Thread t1=new Thread(new ShowStr());
Thread t2=new Thread(new ShowStr());
Thread t3=new Thread(new ShowStr());
Thread t4=new Thread(new ShowStr());
Thread t5=new Thread(new ShowStr());
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
/*
该类随机生成字符串
*/
class ShowStr extends Thread
{
@Override
public void run() {
int num=new Random().nextInt(10)+1;
System.out.println("随机生成的字符串是:"+getRandomString(num));
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(62);//0-9,a-z,A-Z数量之和为62
sb.append(str.charAt(number));//charAt()返回指定索引的值,循环添加指定length的值到StringBuffer形成一个新的字符串
}
return sb.toString();
}
}
某一次执行结果为:
随机生成的字符串是:txae
随机生成的字符串是:pK9QteAcH
随机生成的字符串是:FkJMUv
随机生成的字符串是:VV9TJCSB1E
随机生成的字符串是:fks8gtbBJc
利用实现Runnable接口实现(这个案例用到了org.apache.commons包 ):
import org.apache.commons.lang3.RandomStringUtils;
import java.util.Random;
public class StringTest {
public static void main(String[] args) {
Thread t1=new Thread(new makeString());
Thread t2=new Thread(new makeString());
Thread t3=new Thread(new makeString());
Thread t4=new Thread(new makeString());
Thread t5=new Thread(new makeString());
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
class makeString implements Runnable{
@Override
public void run() {
int num=new Random().nextInt(10)+1;
System.out.println("随机生成的字符串是:"+RandomStringUtils.randomAlphanumeric(num));
}
}
某一次的运行结果认为:
随机生成的字符串是:bX
随机生成的字符串是:oCJHFayM
随机生成的字符串是:yEVj9pdbv7
随机生成的字符串是:WxQ1Fnmp
随机生成的字符串是:IkCl9p