Android线程,锁,并发示例

时间:2016-12-13 15:38:14

标签: java android multithreading optimization concurrency

嗨我很奇怪在一个不在UI线程的线程内的while循环中使用Thread.sleep(x)的性能有多糟糕......这不是使用cpu循环吗?例如

.wraper{
    min-height: 165px;
    overflow: hidden;
    height: 200px;
}
.content {
    margin-top: 30px;
}
#more{
    width:6%;
    margin-right:0px;
    float:right;
}
.wraper.complete{
    height: auto;
}
h3.sub{
    color:#d34615;
    text-decoration:underline;
    padding-left: 10px;
}
#index-hr{
    width:100%;
    border-top:1px solid #333;
    opacity:0.3;
}

2 个答案:

答案 0 :(得分:3)

您应该使用synchronized块来依赖wait / notify / notifyAll来同步您的线程,在您的情况下甚至不需要修改任何状态,任何共享的Object实例都足够了。

代码可以是:

// Mutex to share between the threads waiting for the result.
Object mutex = new Object();
...
onComplete() { 
    synchronized (mutex) {
        // It is done so we notify the waiting threads
        mutex.notifyAll();
    }
}

synchronized (mutex) {
    // Wait until being notified
    mutex.wait();
}

答案 1 :(得分:1)

您实际上可以在线程上使用.join()等待它完成,所以

Thread thread = new Thread(new Runnnable{ run() {
    while(true){
        someImageView.animate()....setListener(..).start();
    }

});
thread.start();
thread.join();