首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java和web socket中的TimerTask

java和web socket中的TimerTask
EN

Stack Overflow用户
提问于 2012-02-06 12:36:26
回答 3查看 2K关注 0票数 1

我正在尝试使用Java的DatagramSocketDatagramPacket类编写一个基本的客户机服务器。我有基本的代码设置,但我想要一种方法,从我的客户端发送100条消息到我的服务器在固定的时间间隔,即1秒,或2秒,或5秒。

基本上,我想要这样的东西:

代码语言:javascript
复制
while (count != 0)
sleep (1);
create message packet;
send message packet;
count--;

在C中有一个睡眠方法,但我不确定在java中如何做到这一点。有人有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2012-02-06 12:41:38

您可以随时调用Thread.sleep(),它在很大程度上等同于C中的sleep函数。但是我建议您使用另一种方法来完成您的程序。看看ScheduledThreadPoolExecutor类,它允许您安排一段代码定期运行:

代码语言:javascript
复制
Runnable myCommand = new Runnable() {
    public void run() {
        // Do some work
    }
};

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(4);
// Execute the command every second = 1000 milliseconds
executor.scheduleAtFixedRate(myCommand, 0, 1000, TimeUnits.MILLISECONDS);
票数 2
EN

Stack Overflow用户

发布于 2012-02-06 12:43:19

代码语言:javascript
复制
Timer timer = new Timer();
timer.schedule(new Task(), 1000); //schedule the task to be run at 1 second (1000 mili sec) time

以下是Task类的代码

代码语言:javascript
复制
class Task extends TimerTask
{
    Task()
    {
    }

    public void run()
    {
        //create datagram socket
        //create datagram packet
        //send the packet
    }
}
票数 1
EN

Stack Overflow用户

发布于 2012-02-06 13:46:28

Java比C更高级(当然你在C中也有线程库:),我的意思是这是作为Java语言支持而不是库支持的)

因此,您可以使用Timer类。

谈到主要功能,您会得到如下内容

代码语言:javascript
复制
DatagramSocket socket = new DatagramSocket();
byte[] buf = new byte[256];
InetAddress address = InetAddress.getByName("sample-address");
DatagramPacket packet = new DatagramPacket
                    (buf, buf.length, 
                    address, 4445);
socket.send(packet); 

在实现TimerTask类中。

必须覆盖那里的run方法。

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

https://stackoverflow.com/questions/9155615

复制
相关文章

相似问题

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