首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >()睡眠问题

()睡眠问题
EN

Stack Overflow用户
提问于 2014-11-30 18:43:39
回答 2查看 112关注 0票数 0

我试图在程序中添加一个节拍器,这是它的类

代码语言:javascript
复制
public void playMet() throws IOException
    {
        int tempo = Integer.parseInt(met_speed.getText());
        //tempo = 60/tempo;
        double delay = 60/tempo*1000; 
        Thread t = new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                while(Play.isSelected()){



                        try {
                            playSound("Click1.wav");
                            System.out.println("beep");
                            Thread.sleep((long) delay);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }



                }
            }
        });
        t.start();
    }

如果我将该值设置为60 per,或每秒一次,程序就可以正常工作。如果我把它设置为其他东西,它就会忽略睡眠。“system.out.println.”是用于测试的,而playSound是一个播放wav文件的类。

不确定我是否忽略了一些显而易见的事情,或者我是否偏离了我应该做的事情

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-30 18:46:14

你在做整数除法

代码语言:javascript
复制
double delay = 60/tempo*1000;

所以如果你把节奏设为100,60/100是0。如果值大于60,则睡眠始终为0。

你应该试着:

代码语言:javascript
复制
double delay = 60.0 / tempo * 1000.0;
票数 4
EN

Stack Overflow用户

发布于 2016-01-23 14:58:46

我建议您使用下列延迟方法:

代码语言:javascript
复制
`
TimeUnit.NANOSECONDS.sleep(100);
TimeUnit.MICROSECONDS.sleep(100);
TimeUnit.MILLISECONDS.sleep(100);
TimeUnit.SECONDS.sleep(100);
TimeUnit.MINUTES.sleep(100);
TimeUnit.HOURS.sleep(100);
TimeUnit.DAYS.sleep(100);`

这些方法很容易使用,而且我也使用它,而不需要乘以1000。

;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27216803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档