Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何每分钟只从客户端向服务器发送一次字符串(在循环中)?_Java_Sockets - Fatal编程技术网

Java 如何每分钟只从客户端向服务器发送一次字符串(在循环中)?

Java 如何每分钟只从客户端向服务器发送一次字符串(在循环中)?,java,sockets,Java,Sockets,我有一个在while循环中的字符串要从客户端发送到服务器多次,但我希望它每分钟只发送一次。我怎么做,有什么想法吗 代码如下: String str= " "; try{ FileInputStream fstream = new FileInputStream("C:\\bluetooth.txt"); DataInputStream in = new DataInputStream(fstream); BufferedReader

我有一个在while循环中的字符串要从客户端发送到服务器多次,但我希望它每分钟只发送一次。我怎么做,有什么想法吗
代码如下:

    String str= " ";
    try{
        FileInputStream fstream = new FileInputStream("C:\\bluetooth.txt");
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));

             while ((str = br.readLine()) != null)   {
            if ( str.equals.("F81EDF5B0CC7")) // "F81EDF5B0CC7" is a String that I have it in the text file 'bluetooth.txt'
                {
                  out.writeUTF(str);
             }
            } 
            in.close();
        }catch (Exception e){
          System.err.println("Error: " + e.getMessage());
        }

请提前帮助和感谢。

使用
定时器。scheduleAtFixedRate(..)


取自。

使用
定时器。调度固定数据(..)



摘自。

查看计划执行器服务(),教程中()

查看计划执行器服务(),教程中()

您是否尝试过线程。睡眠(60000)我不明白您是否要计划发送某些字符串,即每分钟发送一次,或者您希望限制发送速率,所以每分钟发送的字符串不超过一个。@jclozano我在这里没有使用线程,实际上行
str.equals.(“F81EDF5B0CC7”)
没有显示的静态值(我这样做是为了最小化代码行)。所以我不想暂停整个操作。@binary\u runner第一个:)计划一些stringsEven的发送如果你不使用线程,通过实现一个单独的线程只用于发送,你可以使用它来确保每分钟只发送一次。你试过线程了吗。sleep(60000)我不明白您是想安排某些字符串的发送,即每分钟发送一次,还是想限制发送速率,因此每分钟发送的字符串不超过一个。@jclozano我在这里没有使用线程,实际上行
str.equals.(“F81EDF5B0CC7”)
没有显示的静态值(我这样做是为了尽量减少代码行数)。所以我不想暂停整个操作。@binary_runner第一个:)安排一些字符串的发送。如果你不使用线程,通过实现一个单独的线程只用于发送,你可以使用它确保每分钟只发送一次线程,但我认为这将暂停整个过程,我的目的是在发送一个字符串后暂停发送。实际上没有。计时器在单独的线程中运行它的任务,它不会阻止主线程的启动位置:您可以将
while(){..}
循环放在
run(){}
方法中(包括
String str=
声明。)我想你没有理解我的意思,我只想在
if(str.equals.(“F81EDF5B0CC7”)之后暂停
str
谢谢,但我认为这将暂停整个过程,我的目的是在发送一个字符串后暂停发送。实际上没有。计时器在单独的线程中运行它的任务,它不会阻止启动它的主线程:您可以将
while(){..}
循环放入
run(){}
方法中(包括
String str=
declaration。)我想你没有明白我的意思,我只想在
if(str.equals.(“F81EDF5B0CC7”)
int delay =9;   // delay for 0 sec - start immediatelly
int period = 60000;  // repeat every 60 sec.
Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {
    public void run() {
        // Task here ...
    }
}, delay, period);