Java作业-十个人过山洞(多线程)
2017-12-07 20:30
169 查看
目标效果:
代码:
我是渣渣,今天复习发现之前的多线程都做错了,我一直在主线程里懵逼来懵逼去:
1.之前一直以为实现Runnable接口方法创建线程,只要调用run方法就是启动线程了,如今才发现我真的好天真,run只是调用那个方法,不管哪种创建线程的方法,启动都要调用start
2.题目要求的是十个人穿越一个山洞,一个一个走,但是我愣是整了十个人一人一个山洞,所以同时走的,坑爹
3.现在是创建线程时直接把生成的字符串当作线程名字,这样一定不会错了,思路比较清晰了
多线程我一直不太会,如果还有错误请大佬留言。
代码:
package Eight; import java.util.Random; /** * 编写多线程程序,模拟多个人通过一个山洞。 * 这个山洞每次只能通过一个人,每个人通过山洞的时间为1秒(sleep)。 * 随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名。 * 提示:利用线程同步机制,过山洞用一条输出语句表示,该输出语句打印输出当前过山洞的人名, * 每个人过山洞对应一个线程,哪个线程执行这条输出语句,就表示哪个人过山洞。 * @author Vivinia * */ public class AcrossCave { public static void main(String[] args) { Cave cave=new Cave(); //实例化一个山洞 for(int i=0;i<10;i++) { new Thread(cave,getRandomString(6)).start(); //生成字符串立即命名为线程的名字,代表十个人 } } private static String getRandomString(int length) { //length表示生成字符串的长度 String base="abcdefghijklmnopqrstuvwxyz"; Random random=new Random(); StringBuffer sb=new StringBuffer(); //可以追加字符,单纯的String不可以追加 for(int i=0;i<length;i++) { int number=random.nextInt(base.length()); sb.append(base.charAt(number)); //追加新生成数字对应的字符 } return sb.toString(); //charAt返回base字符串中下标为number的字符(从0开始),再追加到sb字符串中 } } class Cave implements Runnable{ //山洞类 @Override public synchronized void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }finally { System.out.println(Thread.currentThread().getName()+"通过了山洞"); //获取当前线程的名字,即为人的名字 } } }
我是渣渣,今天复习发现之前的多线程都做错了,我一直在主线程里懵逼来懵逼去:
1.之前一直以为实现Runnable接口方法创建线程,只要调用run方法就是启动线程了,如今才发现我真的好天真,run只是调用那个方法,不管哪种创建线程的方法,启动都要调用start
2.题目要求的是十个人穿越一个山洞,一个一个走,但是我愣是整了十个人一人一个山洞,所以同时走的,坑爹
3.现在是创建线程时直接把生成的字符串当作线程名字,这样一定不会错了,思路比较清晰了
多线程我一直不太会,如果还有错误请大佬留言。
相关文章推荐
- Java作业-猜数字(多线程)
- java web week_five 多线程作业
- Java作业-多线程
- IT十八掌作业_java基础第八天_多线程
- Java多线程模拟多人过山洞
- Java第十次作业--多线程
- IT十八掌作业_java基础第九天_多线程、自动拆装箱
- IT十八掌作业_java基础第九天_多线程、自动拆装箱
- IT十八掌作业_java基础第八天_多线程
- IT十八掌作业_java基础第八天_多线程
- IT十八掌作业_java基础第九天_多线程、自动拆装箱
- IT十八掌作业_java基础第九天_多线程、自动拆装箱
- 【Java作业】Week10——多线程
- IT十八掌作业_java基础第八天_多线程
- 作业_java基础第九天_多线程、自动拆装箱
- 作业_java基础第八天_多线程
- Java的多线程(上)
- Java基础日记———多线程
- Java作业第八章
- Java多线程介绍