我有兴趣在程序中有多个线程,我的要求是在新线程中启动每个方法。
假设我有以下内容:
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;
}
}
我想在这个类中创建一个像这样的
的对象public class B
{
A myA = new A();
myA.foo();
int ret=myA.boo();
}
我想要的是,当你调用foo()
和boo()
时,这两种方法必须在不同的线程上运行。因此,我可以使用"val"
方法中boo()
的更新值。
请善意地给我一些建议来克服这个问题。 在此先感谢.. :))
答案 0 :(得分:2)
您可以使用以下命令在新线程上运行代码:
new Thread(new Runnable(){
public void run(){
//do stuff here
}
}).start();
答案 1 :(得分:0)
像这样的东西(最简单的例子):
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);
}
您需要制作A
final
,因为这是处理匿名类(如示例中的两个Runnables
)访问本地变量。
此外,您必须将volatile
添加到val
(否则其他线程可能看不到任何更改):
volatile int val = 0;