如何从不同的java线程引用方法

如何从不同的java线程引用方法,java,multithreading,concurrency,java.util.concurrent,Java,Multithreading,Concurrency,Java.util.concurrent,我试图从线程b引用线程a,我本质上想在b类/线程中使用getN()方法,非常感谢您的帮助 //// class help { ///// main { Thread a = new Thread(new A()); Thread b = new Thread(new B(a)); } } class A implements Runnable { private static int tally; public void run

我试图从线程b引用线程a,我本质上想在b类/线程中使用getN()方法,非常感谢您的帮助

//// class help {
    ///// main {

        Thread a = new Thread(new A());
        Thread b = new Thread(new B(a));
    }
}

class A implements Runnable {
    private static int tally;
    public void run() {

    }
    public int getN() {
        tally = 6;
        return tally;
    }
}

class B implements Runnable {
    private A aref;
    public B(A ref){
        aref=ref;
    }
    public void run() {
        aref.getN();
    }
}
//////////////////////////////////////////////////////////////////
/////////////////////////

为了构造类B的对象,需要引用类a的对象,而不是类Thread的对象。因此,这应该是可行的:

A objA = new A();
Thread a = new Thread(objA);
Thread b = new Thread(new B(objA));

为什么
A
A
Runnable
,当它不执行任何操作时(它的
run
方法不包含任何操作)会被放到线程上?我认为这“只是一个例子”,但如果是的话,这是一个没有任何意义的坏例子。你希望
aref.getN()
在线程a上执行吗?@CannedMoose是的,我基本上希望我的B线程能够使用getN()方法,这样我就可以达到计数value@Michael这只是一个例子,但是谢谢你的帮助response@ghost如果只读取另一个线程的值,则应该像前面提到的其他线程一样使用某种同步,至少是
AtomicInteger
或类似的同步。如果要进行更长时间的计算,则需要注意对
getN()
的调用是由线程B的上下文执行的,而不是像您预期的那样在A上执行。干杯,那么我会使用B.start();System.out.println(b.getValue());但是它说我找不到值?@ghost
b
线程的一个实例。它没有
getValue
方法(类也没有
A
B
方法)@javaguy-ivan-milosavljevi当我在做B.start()时,getN()方法似乎不起作用。干杯,在某个地方搞砸了,正试图让我的第二个线程从第一个线程读取数字。你说什么“似乎不起作用”?如果将类
B
中方法
run()
的实现更改为
System.out.println(aref.getN());
它应该打印
6