不可思议的结果。。。谁能帮忙解释下。。。

ker0804 2007-06-18 09:13:37
运行结果:
线程1开始:帮忙 a 长江 长江 bag 东方 country 黄河
线程2开始:黄河 country 黄河 country 可能 hello
线程3开始: 可能 hello 你好 is this 我 this where 阳光
线程4开始:阳光 where women 字典 字典 women
线程1结束:str_PartText[0]=帮忙 a 长江 bag 东方 country 黄河
线程2结束:str_PartText[1]=黄河 country 可能 hello
线程3结束:str_PartText[2]= 可能 hello 你好 is this 我 where 阳光
线程4结束:str_PartText[3]=阳光 where women 字典
线程结束
false
false
false
false
int_temp is :4
线程1开始:帮忙 a 长江 bag 东方 country 黄河 黄河 country 可能 hello
线程2开始: 可能 hello 你好 is this 我 where 阳光 阳光 where women 字典
线程2结束:str_PartText[1]= 可能 hello 你好 is this 我 where 阳光 women 字典
线程1结束:str_PartText[0]=帮忙 a 长江 bag 东方 country 黄河 可能 hello
线程结束
false
false
int_temp is :2
线程1开始:帮忙 a 长江 bag 东方 country 黄河 可能 hello 帮忙 a 长江 bag 东方 country 黄河 可能 hello
线程1结束:str_PartText[0]=帮忙 a 长江 bag 东方 country 黄河 可能 hello
线程结束
false
int_temp is :1
排序结果为:
-------------------------
帮忙 a 长江 bag 东方 country 黄河 可能
hello


run方法为:
public void run(){
if(Thread.currentThread()==thr_StringSort[0]){
String string_guibing=str_PartText[0]+str_PartText[1];
System.out.println("线程1开始:"+string_guibing);
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
string_guibing=PaiChong(string_guibing);
str_PartText[0]=Sort(string_guibing);
System.out.println("线程1结束:str_PartText[0]="+str_PartText[0]);
}
if(Thread.currentThread()==thr_StringSort[1]){
String string_guibing=str_PartText[2]+str_PartText[3];
System.out.println("线程2开始:"+string_guibing);
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
string_guibing=PaiChong(string_guibing);
str_PartText[1]=Sort(string_guibing);
System.out.println("线程2结束:str_PartText[1]="+str_PartText[1]);
}
if(Thread.currentThread()==thr_StringSort[2]){
String string_guibing=str_PartText[4]+str_PartText[5];
System.out.println("线程3开始:"+string_guibing);
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
string_guibing=PaiChong(string_guibing);
str_PartText[2]=Sort(string_guibing);
System.out.println("线程3结束:str_PartText[2]="+str_PartText[2]);
}
if(Thread.currentThread()==thr_StringSort[3]){
String string_guibing=str_PartText[6]+str_PartText[7];
System.out.println("线程4开始:"+string_guibing);
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
string_guibing=PaiChong(string_guibing);
str_PartText[3]=Sort(string_guibing);
System.out.println("线程4结束:str_PartText[3]="+str_PartText[3]);
}
if(Thread.currentThread()==thr_StringSort[4]){
String string_guibing=str_PartText[8]+str_PartText[9];
string_guibing=PaiChong(string_guibing);
str_PartText[4]=Sort(string_guibing);
}
}
...全文
261 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcy1069 2007-06-20
  • 打赏
  • 举报
回复
看一下帮助里面线程关闭的内容吧!
qfs_v 2007-06-19
  • 打赏
  • 举报
回复
这个程序很有意思,
南瓜·先生 2007-06-19
  • 打赏
  • 举报
回复
同意楼上的意见
还有,4个线程一起运行,又没有什么限制,那就是让它们在抢了,再加上上面的原因,这样结果肯定是很乱
bambooman 2007-06-18
  • 打赏
  • 举报
回复
代码不全,难以定位。
注意:PaiChong(string_guibing);
Sort(string_guibing);
两个方法中不要修改同共同的变量,除非增加了同步控制。
ker0804 2007-06-18
  • 打赏
  • 举报
回复
还是问别的吧。;
用什么方法能测试线程 结束没?
我在主线程用 isInterrupted()和isAlive()测试主线程开的 线程
测试 好像 都没用。。
测试关了 但还在运行。
qooice 2007-06-18
  • 打赏
  • 举报
回复
同上。。。。。
约翰羊 2007-06-18
  • 打赏
  • 举报
回复
没看懂~too
zhangchao0323 2007-06-18
  • 打赏
  • 举报
回复
没看懂~

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧