interrupt相关内容
我想以某种方式记录每次 Thread.interrupt()被调用,记录哪个线程发出调用(及其当前堆栈)以及标识信息哪个线程正在中断。 有没有办法做到这一点?搜索信息,我看到有人提到实施安全管理员的可能性。这是可以在运行时完成的(例如,在Applet或Web Start客户端),还是需要对安装的JVM进行操作? 或有没有更好的方法? 解决方案 作为一个快速的黑客,这是一个很多比
..
假设我已经在 ThreadPool 中排队工作项,但是工作项阻塞,如果没有数据要处理(从 BlockingQueue )。如果队列是空的并且没有更多的工作进入队列,那么如果我想中断阻塞任务,我必须调用 Thread.Interrupt 方法,但是如何做一个与 ThreadPool 一样的事情吗? 代码可能如下所示: { try { while(true) { bloc
..
如果在Java中使用以下“idiom”中断,例如从此答案。 while(!Thread.currentThread()。isInterrupted()){ try { = queue.take(); handle(value); } catch(InterruptedException e){ Thread.currentThread()。interrupt(); } }
..
我创建一个Callable实例并使用ExecutorService创建一个新线程的代码。我想杀了这个线程在一定的时间后,如果线程没有完成它的执行。在通过jdk文档后,我意识到Future.cancel()方法可以用来停止线程的执行,但是对我来说,它不工作。当然future.get()方法在规定的时间(在我的情况下它的2秒)之后向线程发送中断,甚至线程正在接收这个中断,但是这个中断仅在线程完成其执行
..
让我们假设我有一个线程消耗由另一个线程产生的项目。它的run方法如下,其中inQueue是一个BlockingQueue boolean shutdown = false; while(!shutdown){ try { WorkItem w = inQueue.take(); w.consume(); } catch(InterruptedException e){ sh
..
基本上,问题标题是什么。 线程t = new Thread(someRunnable); t.start(); t.interrupt(); t.join(); //是否会立即抛出一个InterruptedException? 从我自己的测试,似乎,但只是想确定。我猜在 Thread.join()检查中断状态的线程之前做“等待”例程? 解决方案 i
..
我试图在以下代码中终止该线程: public synchronized void run(){ try { while(!Thread.currentThread()。isInterrupted()){ this.scan(); this.distribute(); this.wait(); } } catch(InterruptedException e){} }
..
我有一个长时间运行的任务,像: public void myCancellableTask(){ while(someCondition ){ checkIfCancelRequested(); doSomeWork(); } } 任务可以取消checkIfCancelRequested()检查取消标志)。通常当我写这样的可取消循环时,我使用一个标志来指示已经
..
我有一个类从 BlockingQueue 接受对象,并通过在连续调用 take()循环。在某些时候,我知道没有更多的对象将被添加到队列。如何中断 take()方法,使其停止阻塞? : public class MyObjHandler实现Runnable { private final BlockingQueue队列; public class MyOb
..
我知道用户可以拥有一个进程,每个进程都有一个地址空间(其中包含有效的内存位置,此过程可以引用)。我知道一个进程可以调用系统调用并传递参数给它,就像任何其他库函数。这似乎表明所有的系统调用都在一个进程地址空间通过共享内存等。但也许,这只是一个错觉,由高级编程语言,系统调用看起来像任何其他功能的事实,当一个进程调用它。 但是,现在让我进一步深入分析下面发生的情况。编译器如何编译系统调用?它可能将
..
我使用多线程环境是一个线程不断地监听用户输入通过重复调用 scanner.nextLine()。 要结束应用程序,此runloop由另一个线程停止,但监听线程将不会停止,直到最后一个用户输入(由于 nextLine())。 关闭流似乎不是一个选项,因为我从System.in读取,它返回一个 InputStream 有没有办法中断扫描程序的阻塞,以便它会返回? 感谢 解决方
..
我正在使用GCC编译器和C ++,我想要一个计时器,当倒计时为0时触发中断。 任何想法?提前感谢。 编辑 感谢Adam,做它。 现在。多个计时器并行运行怎么样? 实际上,这些计时器是非常基本的。在NCURSES,我有一个事情的列表。当我按下一个键,其中的一件事会改变颜色5秒。如果我按另一个键,列表中的另一件事情将会做同样的事情。这就像强调字符串取决于用户输入。
..
大家! 我需要从C / C ++程序调用一些DOS中断(服务),我尝试下面的内联asm代码: (读取字符) int main() { asm( “movb $ 0x01,%ah;” “int $ 0x21” ); system(“PAUSE”); } 但它没有工作!我想知道我在这里做错了什么!另外如果有另一种方式来调用dos中断! 谢谢! 解决方案
..
我正在考虑在我的应用程序中使用C ++ 0x线程,而不是Boost线程。但是,我不知道如何重新实现我对标准C ++ 0x线程,因为他们似乎没有 interrupt()方法。 我当前的设置是: 一个管理工作的主线程; 工作者调用 wait() 至少两个不同的条件变量。主人有一个“超时”状态:在这种情况下,它告诉所有工人停止和给出任何他们得到的结果。使用Boost线程主程序只在线程组
..
我有它运行的应用程序生命周期小的后台线程 - 然而,当应用程序关闭,该线程要正常退出 的问题是,线程运行在15分钟的间隔一些代码 - 这意味着它睡觉ALOT 现在,为了得到它的睡眠,我在这折腾中断 - 。我的问题是但是,如果有这更好的方法,因为中断产生ThreadInterruptedException 下面是我的代码(有点伪)要点: 公共类BackgroundUpdate
..
我要读我的串行端口,但只有当数据来源(我想没有轮询)。 这是我要做的事。 Schnittstelle =新的SerialPort(“COM3”); Schnittstelle.BaudRate = 115200; Schnittstelle.DataBits = 8; Schnittstelle.
..
我想知道,如果它可以中断主线程,并要求它来执行一些回调。主线程应继续与它完成回调后做什么。 例如,我们有2个线程T1和M1(主线程)。 T1将中断M1(主线程),并要求它调用函数与一些参数。货币供应量M1(主线程)将停止做它之前做的和将开始执行的功能。在完成功能后,会回到以前它是做什么的。 我要复制的硬件中断一样。我有一个线程从文件中读取数据。那么就应该让主线程调用一个函数。主线程会做一些事情
..
我有以下内容: F1() { 而(1) { 调用F(2)如果硬件中断引脚为高电平 } }F2() { 如果(TH()不启动) { 启动线程日() } 其他 { 返回线程日()状态 } }TH() { 费时的操作 } 目前,我用下面的启动在f2的结构():静态结构S
..
有没有办法赶在 KEY preSSED 和键释放在事件,而(1)环路从一个终端窗口中运行Linux的简单的C程序。 的kbhit()将返回真正如果某个关键是pressed,残培()返回是pressed的字符。 我如何赶上释放事件? 解决方案 您不能在一个可移植的方式做到这一点。终端(以及那些如的xterm 的仿真器)只给你这是$ P的关键$ pssed,而不是释放事件。图形用户界面通常
..
我有一个线程读取套接字() s,而我希望能够异步停止线程。线程伪code如下: INT needs_quit = 0;无效* thread_read(无效* ARG) { 而(1) { 如果(needs_quit) { 关闭(sock_fd); 返回NULL; } I
..