Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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中的信号 我用C++信号< /p>_Java - Fatal编程技术网

Java中的信号 我用C++信号< /p>

Java中的信号 我用C++信号< /p>,java,Java,信号作用 struct sigaction sigact; 并将所有属性设置为使用信号 现在我想在Java中使用它,Java中的等价物是什么 在中包括“signal.h” 我有两条线索: 从程序开始运行一次 另一个在信号警报处运行 我用C++实现了函数的功能,现在我想用java < /p>实现它。 编辑以实现我的目标: 实际上,我的目标是在信号从第一个线程到达时运行第二个线程,这听起来像是一个典型的“” 在纯Java中,您无法访问OS信号。它们是特定于平台的,Java冲突与平台无关。另外:使用

信号作用

struct sigaction sigact;
并将所有属性设置为使用信号

现在我想在Java中使用它,Java中的等价物是什么

中包括“signal.h”

我有两条线索:

  • 从程序开始运行一次

  • 另一个在信号警报处运行

  • 我用C++实现了函数的功能,现在我想用java < /p>实现它。 编辑以实现我的目标:


    实际上,我的目标是在信号从第一个线程到达时运行第二个线程,这听起来像是一个典型的“”

    在纯Java中,您无法访问OS信号。它们是特定于平台的,Java冲突与平台无关。另外:使用JNI从信号处理程序调用Java可能是“有趣的”(如中所述)

    因此,你必须回到绘图板,思考你想要解决的问题是什么,停止思考如何用信号解决它

    这就是说:如果你坚持信号,并且不怕使用内部的东西,而这些东西可能会一时兴起而改变:看看
    sun.misc.Signal

    编辑现在问题清楚了,信令发生在一个JVM中。因为这种信号在Java中肯定是错误的

    因此,最简单的解决方案是直接从第一个线程中创建并启动第二个线程。不需要信号


    下一个最佳解决方案是使用第二个线程中的
    Object.wait()
    (使用
    线程本身以外的任何对象实例)和第一个线程中的
    Object.notify()
    notifyAll()
    对“集合点”进行编码。在Java教程中搜索这些术语将提供足够的示例。

    因此听起来像是一个典型的“”

    在纯Java中,您无法访问OS信号。它们是特定于平台的,Java冲突与平台无关。另外:使用JNI从信号处理程序调用Java可能是“有趣的”(如中所述)

    因此,你必须回到绘图板,思考你想要解决的问题是什么,停止思考如何用信号解决它

    这就是说:如果你坚持信号,并且不怕使用内部的东西,而这些东西可能会一时兴起而改变:看看
    sun.misc.Signal

    编辑现在问题清楚了,信令发生在一个JVM中。因为这种信号在Java中肯定是错误的

    因此,最简单的解决方案是直接从第一个线程中创建并启动第二个线程。不需要信号


    下一个最佳解决方案是使用第二个线程中的
    Object.wait()
    (使用
    线程本身以外的任何对象实例)和第一个线程中的
    Object.notify()
    notifyAll()
    对“集合点”进行编码。在Java教程中搜索这些术语将提供足够的示例。

    您能更详细地描述一下您想要实现的目标吗?信号可能不是正确的工具。@Mat-如果它们是正确的工具,那么Java就是错误的语言。因为1)你不需要信号。对于2)通常的解决方案是在某个端口上为简单命令使用套接字列表。@usr,您没有足够详细地描述您的目标。仅仅因为你在C++中做了一些事情并不意味着你应该用java中的信号来做。请更准确地描述你真正想要做的事情。谢谢Mat,我添加了我的目标。你能更详细地描述你想要达到的目标吗?信号可能不是正确的工具。@Mat-如果它们是正确的工具,那么Java就是错误的语言。因为1)你不需要信号。对于2)通常的解决方案是在某个端口上为简单命令使用套接字列表。@usr,您没有足够详细地描述您的目标。仅仅因为你在C++中做了一些事情并不意味着你应该用java中的信号来做。请更准确地描述一下你实际上想做什么。谢谢,Mat,我添加了我的目标