首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

线程同步有关问题

2012-01-29 
线程同步问题public class thread{public static void main(String args[]){test anew test()new Thread

线程同步问题
public class thread 
{
public static void main(String args[])
{
test a=new test();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
}
}
class test extends Thread
{
int b=10;
//static Object obj=new Object();
synchronized void print()
{
System.out.println(Thread.currentThread().getName()+":"+b);
b--;
}
public void run()
{
while(b>0)
{
print();
try
{
sleep(1000);//如果换成2000,才能达到理想效果。为什么?
}
catch(Exception e){}

}
}
}

[解决办法]
为达到楼主的目标,不择手段:-)
public class thread {
public static void main(String args[]) {
testsub a = new testsub();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
}
}

class testsub extends Thread {
int b = 10;

synchronized void print() {
if (b < 1) {
return;
}
if (Thread.currentThread().getName().endsWith(
String.valueOf(2 - b % 3 == 0 ? 3 : 2 - b % 3))) {
System.out.println(Thread.currentThread().getName() + ":" + b);
b--;
}
}

public void run() {
while (b > 0) {
print();
try {
sleep(1000);
} catch (Exception e) {
}
}
}
}
红色标记的可以不要......

热点排行