android 共享对象,在两个线程之间共享一个对象,运行两种不同的方法Android Java...

我是新的Java Android ...我试图创建两个线程(名为:Clean和Progress),它将运行两种不同的方法,每个方法都得到相同的对象methodmix。而Clean将运行一个耗时method是混合的(mix.TimeConsumingMethod();)类的一部分,我想Progress thread通过检查类变量监测TimeConsumingMethod()进度如mix.length和mix.framesClean在两个线程之间共享一个对象,运行两种不同的方法Android Java 正在进行

我检查,看看mix.length > 0如果不是我想Progress等待在这里我的一个第崩溃和log CAT我得到的错误:代码调用两个线程

09-20 10:37:32.773: E/AndroidRuntime(12030): java.lang.IllegalMonitorStateException: object not locked by thread before wait()

片段:。片断

Clean运行耗时的方法

mix = new MixMaxMain();

progressThread = new Thread(new Runnable() {

@Override

public void run() {

Progress (mix);

}

},"Progress Thread");

CleanThread = new Thread(new Runnable() {

@Override

public void run() {

Clean (mix);

}

},"Cleaner Thread");

Log.d("STOP", "SEnding cleanThread AND progress Thread");

CleanThread.start();

progressThread.run();

:片断

Progress

long time_start = SystemClock.elapsedRealtime();

mix.Run(Daudio,mu,sigSqr,c);

long time_end = SystemClock.elapsedRealtime();

while(mix.length==0) {try {

Log.d("Progress", "Length is Zero");

Thread.sleep(1);//fails here!!

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} }

Log.d("Progress", "Clean Has Started");

int totalProgressLen = (int)(mix.length+0.7*mix.length);

while(mix.done==false)

{

try {

progressThread.wait(50);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

progress.setProgress(mix.framsClean*256/totalProgressLen );

}

2014-09-20

Hillel

+0

您需要在调用wait之前锁定对象。 http://stackoverflow.com/questions/661068/threading-in-java-how-to-lock-an-object –

2014-10-04 08:50:46

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值