Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 从线程继承的类使CPU 100%运行_Java_Linux_Multithreading_Keyboard - Fatal编程技术网

Java 从线程继承的类使CPU 100%运行

Java 从线程继承的类使CPU 100%运行,java,linux,multithreading,keyboard,Java,Linux,Multithreading,Keyboard,我的应用程序中有这样的代码,我希望在后台运行: import java.awt.*; import java.awt.datatransfer.*; class Main extends Thread implements ClipboardOwner { private Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard(); public void run() { Transf

我的应用程序中有这样的代码,我希望在后台运行:

import java.awt.*;
import java.awt.datatransfer.*;

class Main extends Thread implements ClipboardOwner {

    private Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();

    public void run() {
      Transferable trans = sysClip.getContents(this);
      regainOwnership(trans);
      System.out.println("Listening to board...");
      while (true) { }
    }

    public static void main(String[] args) {
      Main b = new Main();
      b.start();
    }
  //............
它侦听
Ctrl+C
,并在按下此组合键后打印剪贴板的内容。然而,它使CPU始终运行99%。如果我删除
while(true){}
,那么应用程序将立即停止

我试图以
java-jarmyapp.jar&
的形式启动它,但结果是一样的。我想在Windows上也是一样,尽管我现在关心Linux


对此我该怎么办?

您有一个线程运行无限循环。这正是那种将100%的CPU用于免费的事情。如果没有其他问题,在循环中放置几秒钟的
Thread.sleep()
,将降低CPU使用率。

您有一个线程运行无限循环。这正是那种将100%的CPU用于免费的事情。如果没有其他问题,在循环中放置几秒钟的
Thread.sleep()
,将降低CPU使用率。

您有一个线程运行无限循环。这正是那种将100%的CPU用于免费的事情。如果没有其他问题,在循环中放置几秒钟的
Thread.sleep()
,将降低CPU使用率。

您有一个线程运行无限循环。这正是那种将100%的CPU用于免费的事情。如果没有其他问题,在循环中放置几秒钟的
Thread.sleep()
,将降低CPU使用率。

您应该避免使用永久循环检查变量是否已更改,而是使用侦听器。更准确地说,a将允许您在剪贴板发生更改时执行代码

应该是这样的:

    Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(
        new FlavorListener() { 
        @Override 
        public void flavorsChanged(FlavorEvent e) { 
            System.out.println("Clipboard contents: " + e.toString()); 
        } 
    }); 

您应该避免使用永恒循环来检查变量是否已更改,而是使用侦听器。更准确地说,a将允许您在剪贴板发生更改时执行代码

应该是这样的:

    Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(
        new FlavorListener() { 
        @Override 
        public void flavorsChanged(FlavorEvent e) { 
            System.out.println("Clipboard contents: " + e.toString()); 
        } 
    }); 

您应该避免使用永恒循环来检查变量是否已更改,而是使用侦听器。更准确地说,a将允许您在剪贴板发生更改时执行代码

应该是这样的:

    Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(
        new FlavorListener() { 
        @Override 
        public void flavorsChanged(FlavorEvent e) { 
            System.out.println("Clipboard contents: " + e.toString()); 
        } 
    }); 

您应该避免使用永恒循环来检查变量是否已更改,而是使用侦听器。更准确地说,a将允许您在剪贴板发生更改时执行代码

应该是这样的:

    Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(
        new FlavorListener() { 
        @Override 
        public void flavorsChanged(FlavorEvent e) { 
            System.out.println("Clipboard contents: " + e.toString()); 
        } 
    }); 


尝试在while循环中添加Thread.sleep()。不要扩展线程。实现runnable更好看一看@Alex尝试在while循环中添加Thread.sleep()。不要扩展线程。实现runnable更好看一看@Alex尝试在while循环中添加Thread.sleep()。不要扩展线程。实现runnable更好看一看@Alex尝试在while循环中添加Thread.sleep()。不要扩展线程。实现runnable更好看看@Alex它可以睡眠的最长时间是0.5秒。使用线程睡眠有意义吗?@Alex是的。半秒钟对于cpu来说是一段很长的时间。@Alex您应该能够将任意长参数传递给。是吗?我认为只从几秒钟开始就足够了。将Thread.sleep(1)放入循环中,注意它是如何降低CPU使用率的。它可以睡眠的最大时间是0.5秒。使用线程睡眠有意义吗?@Alex是的。半秒钟对于cpu来说是一段很长的时间。@Alex您应该能够将任意长参数传递给。是吗?我认为只从几秒钟开始就足够了。将Thread.sleep(1)放入循环中,注意它是如何降低CPU使用率的。它可以睡眠的最大时间是0.5秒。使用线程睡眠有意义吗?@Alex是的。半秒钟对于cpu来说是一段很长的时间。@Alex您应该能够将任意长参数传递给。是吗?我认为只从几秒钟开始就足够了。将Thread.sleep(1)放入循环中,注意它是如何降低CPU使用率的。它可以睡眠的最大时间是0.5秒。使用线程睡眠有意义吗?@Alex是的。半秒钟对于cpu来说是一段很长的时间。@Alex您应该能够将任意长参数传递给。是吗?我认为只从几秒钟开始就足够了。将Thread.sleep(1)放在循环中,注意它是如何降低CPU使用率的。我已经看到了这段代码,但它不起作用。你能给出一个完整的工作示例吗?我不知道,但这些人有一些建议:FlavorListener在哪里?我已经看到了这段代码,但它不起作用。你能给出一个完整的工作示例吗?我不知道,但这些人有一些建议:FlavorListener在哪里?我已经看到了这段代码,但它不起作用。你能给出一个完整的工作示例吗?我不知道,但这些人有一些建议:FlavorListener在哪里?我已经看到了这段代码,但它不起作用。你能给出一个完整的工作示例吗?我不知道,但这些人有一些建议:那你的听众在哪里?