gpt4 book ai didi

java - 在不同的线程中启动一个 Java 类

转载 作者:行者123 更新时间:2023-12-03 20:26:30 26 4
gpt4 key购买 nike

我想知道如何从不同的线程调用一个类,并让所有调用都在它自己的线程中运行?

假设我有三个线程,每个线程都需要调用 anotherClass.getBS(),但这些调用可能同时出现,没有理由一次执行一个。死锁不是问题。

谢谢!

最佳答案

如果 anotherClass.getBS() 确实是线程安全的,您可以从三个线程中的每一个调用它。它将在您调用它的线程中运行。

这方面的一个小例子。下面的代码产生这个输出:

$ javac Bar.java
$ java Bar
Thread ID 9 running
Thread ID 10 running
Thread ID 8 running
Doing something on thread 9
Doing something on thread 10
Doing something on thread 8
Thread ID 9 running
Doing something on thread 9
Thread ID 8 running
Doing something on thread 8
Thread ID 10 running
Doing something on thread 10

代码如下:

public class Bar
{

static private final class MyOtherClass
{
public void doSomething()
{
System.out.println("Doing something on thread "+Thread.currentThread().getId());
}
}

static private MyOtherClass myOtherClass=new MyOtherClass();

static private final class MyThreadClass implements Runnable
{
public void run()
{
while (true)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException ie)
{
System.err.println("Interrupted");
return;
}
System.out.println("Thread ID "+Thread.currentThread().getId()+" running");
myOtherClass.doSomething();
}
}
}

static public void main(String[] args)
{
Thread t1=new Thread(new MyThreadClass());
Thread t2=new Thread(new MyThreadClass());
Thread t3=new Thread(new MyThreadClass());
t1.start();
t2.start();
t3.start();
}

}

关于java - 在不同的线程中启动一个 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com