题目:
编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名。提示:利用线程同步机制,过山洞用一条输出语句表示,该输出语句打印输出当前过山洞的人名,每个人过山洞对应一个线程,哪个线程执行这条输出语句,就表示哪个人过山洞。
代码:
package 线程;
import java.util.*;
public class aa implements Runnable {
@Override
public void run() {
//模拟山洞
Thread th =Thread.currentThread();
System.out.println(th.getName());
try{
Thread.sleep(2000);
}catch(Exception e)
{
System.err.println("出错");
}
}
}
package 线程;
import java.util.*;
public class Text
{
public static void main(String[] args)
{
aa a=new aa();//线程接口实例
Thread thread1=new Thread(a,"text1");//创建线程对象
Thread thread2=new Thread(a,"text2");//创建线程对象
Thread thread3=new Thread(a,"text3");//创建线程对象
Thread thread4=new Thread(a,"text4");//创建线程对象
Thread thread5=new Thread(a,"text5");//创建线程对象
Thread thread6=new Thread(a,"text6");//创建线程对象
Thread thread7=new Thread(a,"text7");//创建线程对象
Thread thread8=new Thread(a,"text8");//创建线程对象
Thread thread9=new Thread(a,"text9");//创建线程对象
Thread thread10=new Thread(a,"text10");//创建线程对象
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
thread6.start();
thread7.start();
thread8.start();
thread9.start();
thread10.start();
}
}
结果:上机时完成,未截屏