解决方案 »
- 我安装了JAVA有2个文件:jdk1.6.0_10和jre6,用360卸载了再安装只有jdk1.6.0_10文件没有jre6这个文件了,求牛人指点,真心感谢!
- 两个线程的小程序,但不知哪里出错了。大家顺便能解释一下吗??
- hibernate联表查询报的错误,似乎是转型问题,请求帮助
- 求一程序!望老师们赐教!
- BufferWriter如何从键盘输入多行数据到文本
- 还是一个简单的数组问题
- SQLSERVER2000数据库的连接问题,高分相送
- integer 和 int
- 一般大家将做的线图做成jpg都是怎样完成的?
- java新手求助
- 请教怎么获得 容器或组件 区域外的鼠标事件?
- 如何处理 HeadlessException ?
public class Test1 {
public static void main(String[] args){
System.out.println("赛跑程序即将开始");
ThreadDemo t = new ThreadDemo();
t.getName("白马");
Thread tt= new Thread(t);
ThreadDemo t1 = new ThreadDemo();
t1.getName("黑马");
Thread tt1= new Thread(t1);
tt.start();
tt.yield();
tt1.start();
}
}
class ThreadDemo extends Thread{
int Hourse = 0;
boolean falg = true;
String Name = null;
public String getName(String Name){
this.Name = Name;
return Name;
}
public void run(){
try{
while(falg){
if(Hourse>=10){
System.out.println("[" + Name + "]" + "win!");
falg = false;
System.exit(0);
}
Random r = new Random();
int v = r.nextInt(100);
Hourse += v;
System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
Thread.sleep(1000);
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}//因为我这维护的机子没有eclipse所以只能手动排版下凑合看看哪吧..
int Hourse = 0;
volatile static boolean falg = true;
String Name = null;
public String getName(String Name) {
this.Name = Name;
return Name;
}
public void run() {
try {
while (falg) {
Random r = new Random();
int v = r.nextInt(10);
Hourse += v;
Thread.sleep(1000);//这是比较费时的过程
if (Hourse >= 20) {//如果超过了20,就赢了
Thread.currentThread().interrupt();
} //如果没有超过20,才会打印
System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
}
} catch (InterruptedException e) {
if(falg){
System.out.println("[" + Name + "]" + "win!");
falg = false;
}
Thread.currentThread().interrupt();
}
}
}
int Hourse = 0;
volatile static boolean falg = true;
String Name = null;
public String getName(String Name) {
this.Name = Name;
return Name;
}
public void run() {
try {
while (falg) {
Random r = new Random();
int v = r.nextInt(10);
Hourse += v;
Thread.sleep(1000);//这是比较费时的过程
if (Hourse >= 20) {//如果超过了20,就赢了
Thread.currentThread().interrupt();
} //如果没有超过20,才会打印
if(falg && !Thread.currentThread().isInterrupted())System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
}
} catch (InterruptedException e) {
synchronized(ThreadDemo.class){//这里必须得做同步,否则,两个线程可能已经同时进入了if
if(falg){
System.out.println("[" + Name + "]" + "win!");
falg = false;
}
Thread.currentThread().interrupt();
}
}
}
}
class ThreadDemo extends Thread {
int Hourse = 0;
volatile static boolean falg = true;
String Name = null;
public String getName(String Name) {
this.Name = Name;
return Name;
}
public void run() {
try {
while (falg) {
Random r = new Random();
int v = r.nextInt(10);
Hourse += v;
Thread.sleep(1000);//这是比较费时的过程
if (Hourse >= 20) {//如果超过了20,就赢了
Thread.currentThread().interrupt();
} //如果没有超过20,并且线程没有被中断,会打印中间输出
if(falg && !Thread.currentThread().isInterrupted())
System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
}
} catch (InterruptedException e) {
synchronized(ThreadDemo.class){//这里必须得做同步,否则,两个线程可能已经同时进入了if
if(falg){
//打印最终的输出
System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
System.out.println("[" + Name + "]" + "win!");
falg = false;
}
}
}
}
}
//反正都得使用同步,也许这样才对
class ThreadDemo extends Thread {
int Hourse = 0;
volatile static boolean falg = true;
String Name = null;
public String getName(String Name) {
this.Name = Name;
return Name;
}
public void run() {
try {
while (falg) {
Random r = new Random();
int v = r.nextInt(10);
Hourse += v;
Thread.sleep(1000);//这是比较费时的过程
if (Hourse >= 20) {//如果超过了20,就赢了
synchronized(ThreadDemo.class){//这里必须得做同步,否则,两个线程可能已经同时进入了if
if(falg){
//打印最终的输出
System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
System.out.println("[" + Name + "]" + "win!");
falg = false;
}
}
}
if(falg)//如果没有超过20,打印中间输出
System.out.println("[" + Name + "]" + "它在离起跑线已经========" + Hourse + "米");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}