Android 线程同步 ConditionVariable的用法

来源:互联网 发布:世界人口钟实时数据 编辑:程序博客网 时间:2024/05/22 15:08
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(); //打开即唤醒 阻塞线程}});}}

0 0
原创粉丝点击