在Java中,每个方法启动一个线程
我对一个程序中有多个线程感兴趣,我的要求是在一个新线程中启动每个方法 假设我有以下几点:在Java中,每个方法启动一个线程,java,multithreading,Java,Multithreading,我对一个程序中有多个线程感兴趣,我的要求是在一个新线程中启动每个方法 假设我有以下几点: public class A { int val=0; public void foo() { for(int j=0;j<10;j++) { val=j; Thread.Sleep(1000); } } public int boo() { return val; } } new Thread(new
public class A
{
int val=0;
public void foo()
{
for(int j=0;j<10;j++)
{
val=j;
Thread.Sleep(1000);
}
}
public int boo()
{
return val;
}
}
new Thread(new Runnable(){
public void run(){
//do stuff here
}
}).start();
我想要的是,当你调用foo和boo时,这两个方法必须在不同的线程上运行。所以我可以使用boo方法中更新的val值
请给我一些克服这个问题的建议。
提前感谢。:您可以使用以下命令在新线程上运行代码:
public class A
{
int val=0;
public void foo()
{
for(int j=0;j<10;j++)
{
val=j;
Thread.Sleep(1000);
}
}
public int boo()
{
return val;
}
}
new Thread(new Runnable(){
public void run(){
//do stuff here
}
}).start();
下面是最简单的例子:
public static void main(String[] args) {
final A myA = new A();
new Thread(new Runnable() {
public void run() {
myA.foo();
}).start();
new Thread(new Runnable() {
public void run() {
int ret=myA.boo();
}).start();
Thread.sleep(9999);
}
您需要做最后的决定,因为这是处理匿名类的方法,比如示例中访问局部变量的两个Runnable
此外,必须将volatile添加到val,否则其他线程可能看不到对它的任何更改:
volatile int val = 0;
扩展线程,并在运行中实现。如前所述,使用文档了解如何使用线程。因为您希望在不同的线程上从同一个类运行方法。。您可能需要添加一个条件(如线程名称)来执行方法。我可以使用两个运行方法吗。。?因为我想在两个单独的方法中执行foo和boo。谢谢你,但是我需要澄清一个事实,即如何使用run方法来执行两个单独的方法,由两个单独的线程执行。你可以从foo和boo开始一个新的线程。因此,上述代码实际上会在类中出现两次,一次是运行foo代码,另一次是运行boo代码。那么,每个运行方法如何知道谁调用了run,foo或boo..?新的Threadnew Runnable。。。代码将在foo和boo方法中。