public class Test {
public static void main(String[] args) {
Competition c = new Competition()
Thread T = new Thread(c)
T.start()
}
}
class Competition implements Runnable{
int red = 0
int green = 0
int Speed [] = new int [2]
Competition(){
}
public void run(){
Random r = new Random()
for(int a= 0a<500a++){
for(int j = 0j<2j++){
Speed[j] = r.nextInt(2)
red = red + Speed[j]
Speed[j] = r.nextInt(2)
green = green + Speed[j]
}
System.out.println("red的速度为"+red)
System.out.println("green的速度为"+green)
while(red >=500 || green>=500){
if(red >=500){
System.out.println("red先抵达终点线")
}
if(green >= 500){
System.out.println("green先抵达终点线")
}
if(green ==500 &&red ==500 ){
System.out.println("两个同时到达")
}
return
}
}
/* if(red >green){
System.out.println("Redwin"+red)
}
if(red<green){
System.out.println("Greenwin"+green)
}
if(red == green){
System.out.println("equal")*/
}
}//给你个思路自己用swing画出来,这个小程序是把速度设为2红绿两只马先超过500这一线的获胜.如果要多人比赛开启线程就好
package testimport java.util.ArrayList
import java.util.Arrays
import java.util.Collections
import java.util.Comparator
import java.util.HashMap
import java.util.List
import java.util.Map
import java.util.Set
import java.util.SortedMap
import java.util.TreeMap
import sun.util.logging.resources.logging
/**
* 2010-1-17 下午03:08:52 Piaolj
*/
public class Racing implements Runnable {
String str
static Map horses = new TreeMap()// 定义一个全局的Map存放5个马的名字和时间
static int count = 0// 用于判断县城是否全部结束
static boolean flag = true// 后面用while(flag)判断count是否为0,如果有兴趣,可以起另外一个线程完成此任务
public Racing(String string) {
// TODO Auto-generated constructor stub
this.str = string
}
public static void main(String[] args) {
Racing ra1 = new Racing("No.1 Horse")
Racing ra2 = new Racing("No.2 Horse")
Racing ra3 = new Racing("No.3 Horse")
Racing ra4 = new Racing("No.4 Horse")
Racing ra5 = new Racing("No.5 Horse")
Racing checkingThread = new Racing("checkingThread")
Thread t1 = new Thread(ra1)
Thread t2 = new Thread(ra2)
Thread t3 = new Thread(ra3)
Thread t4 = new Thread(ra4)
Thread t5 = new Thread(ra5)
t1.start()
t2.start()
t3.start()
t4.start()
t5.start()
while (flag) {
if (count == 0)// 所有线程结束
{
flag = false
}
}
// 排序
List infoIds = new ArrayList(horses.entrySet())
Collections.sort(infoIds, new Comparator<Map.Entry>() {
public int compare(Map.Entry o1, Map.Entry o2) {// 定义了比较的规则,因为这里是按map的value排序的
Long tmp = Long.parseLong(o1.getValue().toString())
- Long.parseLong(o2.getValue().toString())
return tmp.intValue()
}
})
System.out.println("输出马的名次:")
System.out.println()
for (int i = 0i <infoIds.size()i++) {
String id = infoIds.get(i).toString()
System.out.println(id)
}
}
public void run() {
// TODO Auto-generated method stub
int CircuitLength = 1000
int breakpoint = 200
int tmpint = 200
long Withtime
count = count + 1// 执行了一个线程,正在执行的线程数加1
// System.out.println(Thread.currentThread().getId())
for (int i = 0i <CircuitLength + 1i++) {
long start = System.currentTimeMillis()
if (i == breakpoint) {
int sleeping = (int) (Math.random() * 5000)
try {
Thread.sleep(sleeping)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
breakpoint = breakpoint + tmpint
}
if (i == CircuitLength) {
System.out.print(str + "\t" + "\t")
long end = System.currentTimeMillis()
Withtime = (end - start)
System.out.println("With time is:\t" + Withtime)
// 当每匹马跑完将马的时间的马的名称放入map中
horses.put(str, Withtime)
}
}
count = count - 1// 执行完了一个线程,线程数减1
}
}
时间比较少,写的比较草,呵呵 加了点注释,要是有问题可以发短消息
输出结果:
No.4 Horse With time is: 888
No.3 Horse With time is: 3042
No.5 Horse With time is: 1921
No.2 Horse With time is: 4346
No.1 Horse With time is: 2831
输出马的名次:
No.4 Horse=888
No.5 Horse=1921
No.1 Horse=2831
No.3 Horse=3042
No.2 Horse=4346
package ThreadTestpublic class HorseRacing
{
public static void main(String[] args) {
Herose black = new Herose("黑马" , 19 , 1000) // new Herose(名称,最大速度 , 赛道总长)
Herose white = new Herose("白马" , 18 , 1000)
Herose red = new Herose("红马",20 , 1000)
black.race()
white.race()
red.race()
}
}
package ThreadTest
import java.util.Timer
public class Herose{
private String name
private int maxSpeed
private int distance
public Timer timer = new Timer()
public void race(){
Runnable runnable = new Runnable(){
public void run(){
int Min = 1
int Max = getMaxSpeed()
int i = 0
int myDistance = getDistance()
int position = 0
int nowSpeed = Min + (int)(Math.random() * ((Max - Min) + 1))
while( 0 <myDistance ){
if( i >0 &&i % 10 == 0 ){
nowSpeed = Min + (int)(Math.random() * ((Max - Min) + 1))
position = getDistance()- myDistance
System.out.println( i + "秒 : " + getName() + " 位置为 " + position + "m" + " 当前速度为 " + nowSpeed +"m/s")
}
++i
myDistance = myDistance - nowSpeed
if(myDistance <= 0){
System.out.println( i + "秒 : " + getName() + "到达终点!")
}
try
{
Thread.sleep( 1000) //间隔1000毫秒 = 1秒
} catch (InterruptedException e)
{
e.printStackTrace()
}
}
}
}
new Thread(runnable).start()
}
public Herose(String name, int maxSpeed , int distance)
{
this.name = name
this.maxSpeed = maxSpeed
this.distance = distance
}
public String getName()
{
return name
}
public void setName(String name)
{
this.name = name
}
public int getMaxSpeed()
{
return maxSpeed
}
public void setMaxSpeed(int maxSpeed)
{
this.maxSpeed = maxSpeed
}
public int getDistance()
{
return distance
}
public void setDistance(int distance)
{
this.distance = distance
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)