程序如下,可结果为什么会那样呢?package day1;public class Sender extends Thread {
public static int value;
public static boolean flag;
public Sender(){
flag=false;
}
public void run(){
try{
for(int index=0;index<=10;index++){
value=index;
while(flag){
Thread.yield();
}
System.out.println("发送数据:"+value);
Thread.sleep(200);
flag=true;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
package day1;public class Receiver extends Thread {
public Receiver(){
}
public void run(){
int value;
try{
while(true){
while(!Sender.flag){
Thread.yield();
}
value=Sender.value;
System.out.println("接受数据:"+value);
sleep(200);
Sender.flag=false;
}
}catch(Exception e){
e.printStackTrace();
}
}
}package day1;public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Sender().start();
new Receiver().start();
}}结果如下:
发送数据:0
接受数据:0
发送数据:1
接受数据:2
发送数据:2
接受数据:3
发送数据:3
接受数据:4
发送数据:4
接受数据:5
发送数据:5
接受数据:5
发送数据:6
接受数据:7
发送数据:7
接受数据:8
发送数据:8
接受数据:9
发送数据:9
接受数据:10
发送数据:10
接受数据:10
public static int value;
public static boolean flag;
public Sender(){
flag=false;
}
public void run(){
try{
for(int index=0;index<=10;index++){
value=index;
while(flag){
Thread.yield();
}
System.out.println("发送数据:"+value);
Thread.sleep(200);
flag=true;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
package day1;public class Receiver extends Thread {
public Receiver(){
}
public void run(){
int value;
try{
while(true){
while(!Sender.flag){
Thread.yield();
}
value=Sender.value;
System.out.println("接受数据:"+value);
sleep(200);
Sender.flag=false;
}
}catch(Exception e){
e.printStackTrace();
}
}
}package day1;public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Sender().start();
new Receiver().start();
}}结果如下:
发送数据:0
接受数据:0
发送数据:1
接受数据:2
发送数据:2
接受数据:3
发送数据:3
接受数据:4
发送数据:4
接受数据:5
发送数据:5
接受数据:5
发送数据:6
接受数据:7
发送数据:7
接受数据:8
发送数据:8
接受数据:9
发送数据:9
接受数据:10
发送数据:10
接受数据:10
Thread.yield();
}
value = index;调整一下 Sender 的代码顺序看看吧!希望你能看清楚意思。
http://www.java2000.net/viewthread.jsp?tid=5427