0

在java中,一个线程可以在某个指定的时间间隔内保持一个对象吗?例如,假设我有以下代码:

package test;

class Thread1 implements Runnable {
    private int balance;
    @Override
    public void run() {
        // TODO Auto-generated method stub
    for(int i=0;i<50;i++)
    {
        increment();

        System.out.println("The bal by "+Thread.currentThread().getName()+" "+balance);
    }
    }

    public synchronized void increment()
    {
        int i=balance;
        balance =i+1;
    }


}

主类:

package test;

public class MainC {
public static void main(String args[])
{
    Thread1 job=new Thread1();
    Thread a =new Thread(job);
    Thread b=new Thread(job);
    a.setName("Thread a");
    b.setName("Thread b");
    a.start();
    b.start();

}
}

现在,我希望线程 1 保持对增量方法的锁定直到 i==10 并且不希望线程 2 访问增量方法!可能吗!??

4

1 回答 1

0

除了作为方法修饰符之外,synchronized还可以在任何独立的代码块上使用。例如:

synchronized (this) {
    doStuff();
    doMoreStuff();
}

在您的情况下,您可以将循环分成两个循环,并将第一个循环放在一个synchronized块内。

于 2012-12-23T19:26:19.647 回答