Java多线程模拟多人过山洞

来源:互联网 发布:白酒网络营销策划方案 编辑:程序博客网 时间:2024/06/10 00:20
编写多线程应用程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示一下每次通过山洞人的姓名。
思路:这里随机生成10个人,就好比是10个线程,并发的执行,它们竞争这个山洞的通过权,同时,每个人通过山洞的时间是5s。但是这里随机的意思,不知道是通过的顺序有随机性,还是生成人的名字的随机,但是我感觉,这里如果是随机生成人名,好像并没有什么意义,既然是多线程的编程,所以我的理解是通过的顺序要是随机的。
解决办法:使用线程回调的方法,将10个人的名字定义在回调类中,共享给其他10个线程,然后每个线程在输出人名的时候,给它进行同步,也就是将获得人名的方法进行同步操作,同时延迟5s输出人名,模拟通过时间为5s。
具体代码:
回调类:
package com.xgd.thread.test;/**   * Package: com.xgd.thread.test   *   * File: ThroughCave.java    *   * Author: jiangpan   Date: 2015年9月21日   *   * Copyright @ 2015 Corpration Name   *    */public class ThroughCave {private String[] name;public ThroughCave() {//在构造方法中初始化一个包含10个人名的String数组String[] name = {"张三","李四","王五","马六","牛七","王八","小明","小红","小花","小雷"};this.name = name;}//输出人名的方法,同步化synchronizedpublic synchronized void PrintName(String name){//延迟5s,模拟过山洞的时间为5stry {Thread.sleep(5000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(name);}//将10个人名分给10个线程,模拟10个人public void SendAllNames(){for (int i = 0; i < name.length; i++) {GetNameThread gt = new GetNameThread(this, name[i]);gt.start();}}public static void main(String[] args){ThroughCave tc = new ThroughCave();tc.SendAllNames();}}


线程类:
package com.xgd.thread.test;/**   * Package: com.xgd.thread.test   *   * File: GetNameThread.java    *   * Author: jiangpan   Date: 2015年9月21日   *   * Copyright @ 2015 Corpration Name   *    */public class GetNameThread extends Thread{private ThroughCave tcave;private String name;//初始化线程的时候,获得回调类对象和人名public GetNameThread(ThroughCave tcave,String name) {this.tcave = tcave;this.name = name;}public void run(){//输出人名,模拟过山洞tcave.PrintName(name);}}



1 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米4s微信反应很慢怎么办 手机网页缓存的视频播放不了怎么办 ios微信占用内存太大了怎么办 爱奇艺离线视频显示暂无缓存怎么办 酷狗音乐不小心删了歌怎么办 苹果手机里系统占的空间太大怎么办 酷狗音乐歌单里有不同步的歌怎么办 一插耳机手机自带音乐就响怎么办 清理空间时不小心把图片删了怎么办 手机中清理误把照片删了怎么办 清理手机文件把照片给删了怎么办 清理手机不小心把照片删了怎么办 金牛不回微信我也不理他他会怎么办 华为手机微信文件自动删除怎么办 微信清理数据后不能登录了怎么办 k歌占内存又不想删除歌曲怎么办 把所有商品放在一起做链接怎么办 微信解冻短信验证总显示失败怎么办 淘金币能抵钱商家拿了淘金币怎么办 真实订单被系统判定虚假交易怎么办 淘宝买家号疑似虚假交易违规怎么办 货品交易一方收了定金违约了怎么办 饿了么店铺收到差评怎么办 淘宝顾客退款没成功给差评怎么办 身份证绑定了淘宝注册支付宝怎么办 把钱转错到支付宝账号被扣了怎么办 网上买东西收到信息被删掉了怎么办 表格在手机上显示不出来怎么办? 电子表格中复制后没有虚线框怎么办 word中页眉页脚横线短了怎么办 亿图图示画的图不显示怎么办 掌柜宝用了几天无法登录了怎么办 手机千牛消息不小心删除了怎么办 淘宝账号被冻结提示无法恢复怎么办 商家未发货我误点了确认收货怎么办 淘宝买货商家不发货也不退款怎么办 商家没发货点成收货了怎么办 淘宝新店上架产品未通过审核怎么办 安卓手机电池虚电怎么办_查查吧 拼多多拼单期间商家下架商品怎么办 微信绑别人的卡需要人脸认证怎么办