zoukankan      html  css  js  c++  java
  • 实验报告七&&课程总结

    Java实验报告

     

    班级 计科二班 学号 20188450 姓名 李代传

    完成时间 2019.10.22

    评分等级

     

     

     

    实验代码1

     

     

    package 火车站售票程序;

     

    public class Voting implements Runnable {

        private int votings=1000;

        @Override

        public void run() {

            // TODO Auto-generated method stub

            while(true) { //买票循环,不买完不结束。

            if(this.VotingMain()!=1) { //卖光票,结束线程。

                System.out.println(Thread.currentThread().getName()+"票已卖光");

                return;

            }

            try {

                Thread.yield(); //线程礼让,在睡眠一秒之前,买票之后。

                Thread.sleep(1000);

            }catch (InterruptedException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

             }

            }

        }

        public synchronized int VotingMain() { //同步方法。

            if(this.votings>=1) {

                this.votings--;

                System.out.println(Thread.currentThread().getName()+"购票成功!"+"剩余票数"+this.votings);

                return 1;

            }

            return 0;

        }

    }

    package 火车站售票程序;

     

    public class Main {

     

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            Voting v=new Voting();

            for(int i=0;i<10;i++) {

                new Thread(v).start();//创建十个线程并直接让线程就绪

            }

        }

     

    }

     

     

    实验结果

    依此类推->

    Thread-2购票成功!剩余票数40

    Thread-5购票成功!剩余票数39

    Thread-9购票成功!剩余票数38

    Thread-7购票成功!剩余票数37

    Thread-0购票成功!剩余票数36

    Thread-3购票成功!剩余票数35

    Thread-6购票成功!剩余票数34

    Thread-2购票成功!剩余票数33

    Thread-4购票成功!剩余票数32

    Thread-1购票成功!剩余票数31

    Thread-8购票成功!剩余票数30

    Thread-9购票成功!剩余票数29

    Thread-5购票成功!剩余票数28

    Thread-0购票成功!剩余票数27

    Thread-7购票成功!剩余票数26

    Thread-3购票成功!剩余票数25

    Thread-6购票成功!剩余票数24

    Thread-8购票成功!剩余票数23

    Thread-4购票成功!剩余票数22

    Thread-1购票成功!剩余票数21

    Thread-2购票成功!剩余票数20

    Thread-9购票成功!剩余票数19

    Thread-5购票成功!剩余票数18

    Thread-0购票成功!剩余票数17

    Thread-7购票成功!剩余票数16

    Thread-3购票成功!剩余票数15

    Thread-6购票成功!剩余票数14

    Thread-4购票成功!剩余票数13

    Thread-2购票成功!剩余票数12

    Thread-1购票成功!剩余票数11

    Thread-8购票成功!剩余票数10

    Thread-5购票成功!剩余票数9

    Thread-9购票成功!剩余票数8

    Thread-0购票成功!剩余票数7

    Thread-7购票成功!剩余票数6

    Thread-3购票成功!剩余票数5

    Thread-6购票成功!剩余票数4

    Thread-2购票成功!剩余票数3

    Thread-8购票成功!剩余票数2

    Thread-4购票成功!剩余票数1

    Thread-1购票成功!剩余票数0

    Thread-9票已卖光

    Thread-5票已卖光

    Thread-0票已卖光

    Thread-7票已卖光

    Thread-3票已卖光

    Thread-6票已卖光

    Thread-2票已卖光

    Thread-1票已卖光

    Thread-8票已卖光

    Thread-4票已卖光

     

     

    实验总结

    很多同学反应启动不了多线程,我虽然没碰到无法执行多线程的情况。但是我借用了一个不能执行多线程的代码,多次修改后,发现可能是因为Thread.Sleep(1000)的放置的问题。具体情况如下:如果放在了同步(synchronized)方法中,在Run()方法循环中调用此方法,就会出现一直是一个线程输出的情况。如果此时在Run()方法中加入Thread.Sleep(),就能看到其他线程的输出了。

    对于以上情况,我又想到了老师上课的那段代码,虽然也是放在(synchronized)同步代码块中,但是依旧是放在Run()方法中。

    所以,是不是如果要用这个Thread.Sleep()的时候,必须要放在Run()方法中才能看到多个线程的输出呢?

     

    课程总结

    近期我们上课氛围很差,使得老师不能像以前一样全力教导我们。但是我还是按自己的步伐去学习,专心听讲。这上一节课的File类,上课时虽然看懂了,但是实际操作肯定会有很多问题。所以也得自己多去操作,用一用类里的方法,以便自己熟悉。

  • 相关阅读:
    压力测试工具
    查找数据库阻塞和死锁
    10个jquery动画菜单:插件和教程
    整理出来的一些Android基础知识
    架构设计
    jQuery页面图片伴随滚动条逐渐显示
    网架构学习笔记
    win7任务栏QQ影音的最近播放记录清理
    修复CPU断针
    让thinkpad更安静——控制风扇转速,解决tpfancontrol导致的关机、重启、黑屏
  • 原文地址:https://www.cnblogs.com/xqldc/p/11739255.html
Copyright © 2011-2022 走看看