java如何异步调用一个方法?

tiandike 2006-11-20 07:13:31
我想异步调用一个类的方法,因为这个类的这个方法很耗时间?怎么做?
public class A{
public void dosomething(){};
}

public class client{
???????
}
...全文
19407 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
LBN1012 2006-11-23
  • 打赏
  • 举报
回复
如果方法有返回值怎么处理呢?
li37 2006-11-22
  • 打赏
  • 举报
回复
不清楚你指的耗时间具体是什么情况,如果也同时消耗cpu的话,建议开线程,中间适当的加上sleep

如果还需要他尽量不占用时间片的话,可以降低该线程的优先级

dzlulu1234 2006-11-22
  • 打赏
  • 举报
回复
根据需要开线程做,不过先要确定这个操作很耗时,开个线程也要消耗时间的
开这样的线程用一个匿名类最简单了
new Thread(){
public void run(){
//do task
}

}.start();
star_str 2006-11-21
  • 打赏
  • 举报
回复
我不认为开一个新线程有什么效果!

线程是指子进程之间高速切换!并不会对你的需求有帮助的!
jackxing 2006-11-21
  • 打赏
  • 举报
回复
定义一个类,实现 Runnable 接口,将任务实现代码放在 run 方法中,然后启动该线程。
如果该任务完成后要通知主线程,使用回调函数。
whu531 2006-11-21
  • 打赏
  • 举报
回复
关于线程,内容太多了!
class A implements Runnable{
Thread t;
A(){
t = new Thread(this);
t.start();
}
}
//................
class b extends Thread{
b()
{
start();
}
}
tiandike 2006-11-21
  • 打赏
  • 举报
回复
怎么回调?有代码例子吗?
piaopiao11 2006-11-21
  • 打赏
  • 举报
回复
根据需要开线程做,不过先要确定这个操作很耗时,开个线程也要消耗时间的
开这样的线程用一个匿名类最简单了
new Thread(){
public void run(){
//do task
}

}.start();


alltimekiller 2006-11-21
  • 打赏
  • 举报
回复
采用回调是最好的方法
tttk 2006-11-21
  • 打赏
  • 举报
回复
使用线程的确是一个好主意

levi_java 2006-11-20
  • 打赏
  • 举报
回复
这个就是,你会发现两个线程去填数组时,不是按顺序填的。就是因为线程不同步。
不过我在Eclipse中运行这个是同步,用其他的就不是同步的,怪~
class NumberArray implements Runnable{
int count=0;
int numbers[]=new int[20];
int n;
NumberArray(int n){
this.n=n;
}
public void addnumber(int n){

//synchronized(this){

numbers[count]=n;
System.out.println("numbers["+count+"]="+numbers[count]);
count++;

// }
}

public void run(){

for(int i=0;i<n;i++){
addnumber(i);

}

}
}


public class MutilThreadDeamo{
public static void main(String args[]){
NumberArray num=new NumberArray(10);
Thread t1=new Thread(num);
Thread t2=new Thread(num);
t1.start();
t2.start();



}
}
levi_java 2006-11-20
  • 打赏
  • 举报
回复
这个就是,你会发现两个线程去填数组时,不是按顺序填的。就是因为线程不同步。
不过我在Eclipse中运行这个是同步,用其他的就不是同步的,怪~
class NumberArray implements Runnable{
int count=0;
int numbers[]=new int[20];
int n;
NumberArray(int n){
this.n=n;
}
public void addnumber(int n){

synchronized(this){

numbers[count]=n;
System.out.println("numbers["+count+"]="+numbers[count]);
count++;

}
}

public void run(){

for(int i=0;i<n;i++){
addnumber(i);

}

}
}


public class MutilThreadDeamo{
public static void main(String args[]){
NumberArray num=new NumberArray(10);
Thread t1=new Thread(num);
Thread t2=new Thread(num);
t1.start();
t2.start();



}
}
sunnauq 2006-11-20
  • 打赏
  • 举报
回复
如果没有对方法,或要访问的对象做特殊的同步处理的话,线程的访问都是异步的吧?比如楼上说的
healer_kx 2006-11-20
  • 打赏
  • 举报
回复


class YourWork implements Runnable {
void run() {
//Add Code about your work;
}
}


///
Thread thread = new Thread(new YourWork);
thread.start();
tiandike 2006-11-20
  • 打赏
  • 举报
回复
有例子参考吗?
zzk8994073 2006-11-20
  • 打赏
  • 举报
回复
另外开一个线程调用

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧