同步来自不同对象的线程-{已编辑}

bvk5enib  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(240)

java-同步来自不同对象的线程。参考以下示例;如果它是一个对象,它工作良好;但是如果我使用2,它就不能像预期的那样工作;在我的用例中,我有20个对象,它们具有不同的字符串值,并且都在同一时间运行;同步块没有得到尊重

public class temp {
    synchronized void printTable(int n){//method not synchronized
        for(int i=1;i<=5;i++){
            System.out.println(n*i);
            try{
                Thread.sleep(400);
            }catch(Exception e){System.out.println(e);}
        }

    }
}
class MyThread1 extends Thread{
    temp t;
    MyThread1(temp t){
        this.t=t;
    }
    public void run(){
        t.printTable(5);
    }

}
class MyThread2 extends Thread{
    temp t;
    MyThread2(temp t){
        this.t=t;
    }
    public void run(){
        t.printTable(100);
    }
}
class TestSynchronization1{
    public static void main(String args[]){
        temp obj = new temp();//only one object
        temp obj2 = new temp();
        MyThread1 t1=new MyThread1(obj);
        MyThread2 t2=new MyThread2(obj2);
        t1.start();
        t2.start();
    }
}

输出:5 100 200 10 15 300 400 20 25 500
但是如果我用一个temp示例

class TestSynchronization1{
    public static void main(String args[]){
        temp obj = new temp();//only one object
        //temp obj2 = new temp();
        MyThread1 t1=new MyThread1(obj);
        MyThread2 t2=new MyThread2(obj);
        t1.start();
        t2.start();
    }
}

输出:5 10 15 20 25 100 200 300 400 500

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题