Android(安卓)线程同步 ConditionVariable的用法
16lz
2021-12-04
import android.app.Activity;import android.os.Bundle;import android.os.ConditionVariable;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {ConditionVariable mCV = new ConditionVariable();Button unLock;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);unLock = (Button) findViewById(R.id.btn_unlock);new Thread() {public void run() {try {for (int i = 0; i < 5; i++) {Thread.sleep(1000);System.out.println(Thread.currentThread().getId() + ",count=" + i);if (i == 3) {mCV.close();//重置阻塞条件,当再次运行到block()时 仍会再次阻塞; 若不重置,则不再阻塞mCV.block();//当前线程阻塞,直到open() System.out.println("block");}if (i == 4) {mCV.close();mCV.block(3000);//当前线程阻塞,直到open() 或 超时System.out.println("block 3 seconds");i = -1;}}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}};}.start();unLock.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {mCV.open(); //打开即唤醒 阻塞线程}});}}
更多相关文章
- android IntentService的深入理解
- Android(安卓)anr异常测试
- FFmpeg In Android(安卓)- tutorial-4-Spawning Threads创建线程
- Google Android's Gingerbread Update Coming Soon
- Android(安卓)实现MD5加密
- Android学习笔记(6)————Android的线程与进程
- android jni 多线程编程 join thread
- Android(安卓)实现MD5加密
- Android(安卓)欢迎界面设置