如何在运行时更改线程的睡眠时间?

时间:2018-07-17 08:25:20

标签: java android multithreading android-studio thread-safety

我正在开发一个手电筒应用程序。当我更改搜索栏上的值时,我想更改线程的睡眠时间,但是它不是在运行时实现的,而是每次我都必须停止线程以从搜索栏获得新值.` seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            value = progress;



            Toast.makeText(getApplicationContext(), "changing"+value, Toast.LENGTH_SHORT).show();
        }

>这里是用于创建和设置线程值的代码

    public void threadinit(final int value)

{

      this.value= value;



    t = new Thread(new Runnable() {
        @Override
        public void run() {
            boolean stopExecution;
            final boolean toExit = false;
            //while( blinks=true)
            while (!t.isInterrupted()) {

                params = camera.getParameters();
                params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                camera.setParameters(params);
                camera.stopPreview();

                try {
                    Thread.sleep(value);

非常感谢您的回答

2 个答案:

答案 0 :(得分:0)

Thread.sleep()不被保证。这意味着,出于各种原因(在该问题的主题之外),您可能会或可能不会在您想要的时间内睡眠。

检查此链接

How to change the delay of sleep/timer thread in android during runtime?

答案 1 :(得分:0)

我不会为此使用sleep()和interrupt(),而是使用wait()和notify()机制。