Java 一个对象只启动一次但被不同线程调用意味着什么?(我指的是Servlets…)

Java 一个对象只启动一次但被不同线程调用意味着什么?(我指的是Servlets…),java,multithreading,servlets,Java,Multithreading,Servlets,所以我知道只有一个Servlet实例,Servlet的方法由不同的线程调用。。我想理解这个概念,但我很难理解 假设我有一个类和一个方法: public class A{ public void foo(Bar bar){ } } 如何可以有一个单一的对象,但它将被不同的线程调用?有什么帮助吗?这里有一个程序,用你的例子说明了这个概念: // Here is your class public class A { public void foo(Bar bar){

所以我知道只有一个Servlet实例,Servlet的方法由不同的线程调用。。我想理解这个概念,但我很难理解

假设我有一个类和一个方法:

public class A{

    public void foo(Bar bar){
    }

}

如何可以有一个单一的对象,但它将被不同的线程调用?有什么帮助吗?

这里有一个程序,用你的例子说明了这个概念:

// Here is your class
public class A {
    public void foo(Bar bar){
        System.out.println(bar);
    }
}
// Here is a class with a main that runs foo(Bar) on five threads
public class Demo extends Thread {
    static A sharedA = new A();
    Bar myBar = new Bar();
    public void run() {
        sharedA.foo(myBar);
    }
    public static void main(String args[]) {
        for (int i = 0 ; i != 5 ; i++) {
            (new Demo()).start();
        }
    }
}
上面,只有一个
A
实例,因为
sharedA
static
main()
创建五个线程,每个线程在
a
的共享实例上调用一个方法
foo


您可以稍微玩一下这个演示—例如,尝试更改
a
来计算
foo
的调用,并从几百个线程运行它。您会发现,如果只是增加计数器,结果会不一致,需要使用同步或原子整数来正确计数。

很难理解您需要什么帮助。有一个物体,A。它存在于记忆的某个地方。然后很多线程在对象A上执行
foo
函数。有什么让人困惑的?谢谢,回答得很好。这就是Servlet的基本工作方式,对吗?@KorayTugay嗯,不完全是这样-访问Servlet的线程是由传入的请求启动的。此外,Servlet对象可能不一定存储在静态变量中。但共享是一样的:Servlet对象只在应用程序启动时创建一次,然后所有请求从不同线程调用相同的方法。