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类,上课时虽然看懂了,但是实际操作肯定会有很多问题。所以也得自己多去操作,用一用类里的方法,以便自己熟悉。

  • 相关阅读:
    另一种保证单次插入回文自动机复杂度的做法
    loj #6070. 「2017 山东一轮集训 Day4」基因
    求第一类斯特林数的一行
    NOIP2018游记
    HDU3377 Plan
    【BZOJ】1830: [AHOI2008]Y型项链
    【BZOJ】1832: [AHOI2008]聚会
    【BZOJ】1831: [AHOI2008]逆序对
    【BZOJ】1085: [SCOI2005]骑士精神
    【BZOJ】1798: [Ahoi2009]Seq 维护序列seq
  • 原文地址:https://www.cnblogs.com/xqldc/p/11739255.html
Copyright © 2011-2022 走看看