我如何在Java中实现同步?

问题描述 投票:0回答:1

我有一个有关多线程的作业,我需要一些帮助。

我有一个Ressource类,无法更改

public class Ressource {
    public int val;
    public void incr() {
        val++;

    }
    public void decr() {
        val--;

    }

而且我有我的主班

public class TwoThreads {
    public static Ressource res = new Ressource();
    public static void main(String[] args)  {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i = 0; i < 100; i++){
                    res.incr();
                }
                System.out.println(res.val);
            }
        });
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i = 0; i < 100; i++){
                    res.decr();
                }
                System.out.println(res.val);
            }
        });
        t1.start();
        t2.start();

    }
}

我尝试在Override方法中使用同步,但是没有用。我知道如果我用过

 public synchronized void incr() {
        val++;

    }

它可以工作,但是我不应该更改资源类中的任何内容。有任何想法吗?

java multithreading thread-synchronization
1个回答
0
投票

我想增加到100,然后减少到0。首先t1应该运行当它完成时应该t2 start.But我必须主要方法。

您可以执行以下操作:

t1.start();
if (!t1.isAlive()) {
    t2.start();
}
© www.soinside.com 2019 - 2024. All rights reserved.