⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 racer.java

📁 个人感觉非常不错的poleperst-acid
💻 JAVA
字号:
/* 
 This file is part of the PolePosition database benchmark
 http://www.polepos.org

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; either version 2
 of the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public
 License along with this program; if not, write to the Free
 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA  02111-1307, USA. */

package org.polepos.framework;

import java.util.*;

import org.polepos.reporters.*;

public class Racer implements Runnable {

    
    /**
     * By setting the XSS_THREAD variable to true Poleposition can be
     * configured to run in a dedicated thread to allow -Xss settings.
     * see: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4689767
     */
    private static final boolean XSS_THREAD = false;

    private final List<Circuit> circuits;
    private final List<Team>    teams;

    public Racer(List<Circuit> circuits, List<Team> teams) {
        this.circuits = circuits;
        this.teams = teams;
        
        if(! XSS_THREAD){
            run();
            return;
        }

        new Thread(this).start();
        
        synchronized (this) {
            try {
                this.wait(Integer.MAX_VALUE);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public void run() {

        synchronized (this) {

            long start = System.currentTimeMillis();

            Reporter[] reporters = new Reporter[] { new PlainTextReporter(), new PDFReporter(),
                new CSVReporter(), new HTMLReporter()};

            for (Reporter reporter : reporters) {
                reporter.startSeason();
            }

            for (Circuit circuit : circuits) {

                System.out.println("* Racing on " + circuit.name());

                for (Reporter reporter : reporters) {
                    reporter.sendToCircuit(circuit);
                }

                for (Team team : teams) {

                    Driver[] drivers = team.nominate(circuit);

                    if (drivers == null || drivers.length == 0) {

                        for (Reporter reporter : reporters) {
                            reporter.noDriver(team, circuit);
                        }

                    } else {
                        for (Driver driver : drivers) {

                            for (Car car : team.cars()) {

                                if (car != null) {

                                    System.out.println("** On track: " + team.name() + "/"
                                        + car.name());

                                    TurnSetup[] setups = circuit.lapSetups();
                                    TurnResult[] results = circuit.race(team, car, driver);

                                    for (Reporter reporter : reporters) {
                                        reporter.report(team, car, setups, results);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            for (Reporter reporter : reporters) {
                reporter.endSeason();
            }

            long stop = System.currentTimeMillis();
            long duration = stop - start;

            System.out.println("\n****************************************************");
            System.out.println("The F1 season was run O.K. without lethal accidents.");
            System.out.println("****************************************************\n");
            System.out.println("Overall time taken: " + duration + "ms\n");
            System.out.println("All output from this benchmark run can be found in:");
            System.out.println(reporters[0].path());
            this.notify();
        }
        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -