Android 多线程加锁

来源:互联网 发布:win php7 mysql 编辑:程序博客网 时间:2024/06/10 06:06

两个线程同一把锁,防止读取得数据不完整  取得时候加锁 确保数据取完,读的时候使用通一把锁确保数据读完



private Lock lock = new ReentrantLock();

// 软解  本地回调方法 
// @{link startThreads()}
public void onProcessYuvData(final byte[] data, final int width,
final int height) {
lock.lock();
mFrame.height = height;
mFrame.width = width;
mFrame.pix = data;
lock.unlock();


}


/**
* OpenGL渲染画面

*/
private void startThreads() {
Thread thread = new Thread() {
public void run() {
glRenderer.update(mFrame.width, mFrame.height);
FrameBean frameBean = new FrameBean();
while (isplay) {
lock.lock();
frameBean.width = mFrame.width;
frameBean.height = mFrame.height;
frameBean.pix = mFrame.pix;
lock.unlock();
if (frameBean.width != 0 || frameBean.height != 0) {
if (frameBean.pix != null && frameBean.width != 0
&& frameBean.height != 0) {
glRenderer.update(frameBean.pix, frameBean.width,
frameBean.height);
}
}


}
}
};
// LoadingDialog.showLoadingDlg(SDLActivity.this, false, "");
thread.start();


}

0 0