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

这个程序中,马士兵是不是说错了? 求 大牛 指导!该怎么解决

2012-04-13 
这个程序中,马士兵是不是说错了? 求 大牛 指导!!!代码在此,他说F1和F2都被synchronized了,虽然先f1.start(

这个程序中,马士兵是不是说错了? 求 大牛 指导!!!
代码在此,他说F1和F2都被synchronized了,虽然先f1.start().但是后面跟着执行F2();

那么必须等F2执行完了,才能执行F1。

我就不懂了,F1在F2之前开始执行,为什么不是先锁住F1然后等F1执行完以后再执行F2呢?

Java code
public class TestSync2 implements Runnable{    static int b = 10;        public synchronized void f1(){        try{        Thread.sleep(1000);    } catch (InterruptedException ie){}        int b = 1000;        //synchronized (f2);        System.out.println("B1 = " + b);                }            public  synchronized static void f2(){        try{        Thread.sleep(5000);    }    catch (InterruptedException ie){}        int b = 2000;        System.out.println("B2 = " + b);                }            public void run(){            f1();        }                    public static void main(String[] args){        TestSync2 ts = new TestSync2();        Thread tst = new Thread(ts);        tst.start();        TestSync2.f2();        System.out.println("ALL DONE B= " + ts.b);                }    }


[解决办法]
探讨
代码在此,他说F1和F2都被synchronized了,虽然先f1.start().但是后面跟着执行F2();

那么必须等F2执行完了,才能执行F1。

我就不懂了,F1在F2之前开始执行,为什么不是先锁住F1然后等F1执行完以后再执行F2呢?

Java code

public class TestSync2 implements Runnable{
static in……

[解决办法]
多线程那里
探讨

引用:
代码在此,他说F1和F2都被synchronized了,虽然先f1.start().但是后面跟着执行F2();

那么必须等F2执行完了,才能执行F1。

我就不懂了,F1在F2之前开始执行,为什么不是先锁住F1然后等F1执行完以后再执行F2呢?

Java code

public class TestSync2 implements Runnable{……

[解决办法]
Java code
 public  synchronized static void f2(){         try{         [color=#FF0000]System.out.printl("运行f2");[/color]         Thread.sleep(5000);     }    catch (InterruptedException ie){}         int b = 2000;         System.out.println("B2 = " + b);          } 

热点排行