在已经在java中启动的线程内调用代码

在已经在java中启动的线程内调用代码,java,multithreading,Java,Multithreading,如何在已经启动的自定义线程中运行代码 我需要它在一个启动的线程内运行代码,比如EDT-SwingUtilities.invokeLater或Android.view.runOnUIThread 谢谢 简而言之,您的特殊线程需要保留一个要运行的任务队列,然后静坐等待将任务添加到该队列中。当任务出现时,它应该运行该任务,然后返回并等待更多。请确保使用适当的同步来保护该队列,因为它将被多个线程访问。并且要非常小心,异常不会意外地终止循环 当然,这正是用户界面的事件调度器线程所做的。如果您希望能够在一个

如何在已经启动的自定义线程中运行代码

我需要它在一个启动的线程内运行代码,比如EDT-SwingUtilities.invokeLater或Android.view.runOnUIThread


谢谢

简而言之,您的特殊线程需要保留一个要运行的任务队列,然后静坐等待将任务添加到该队列中。当任务出现时,它应该运行该任务,然后返回并等待更多。请确保使用适当的同步来保护该队列,因为它将被多个线程访问。并且要非常小心,异常不会意外地终止循环


当然,这正是用户界面的事件调度器线程所做的。

如果您希望能够在一个不专门接受任务执行的线程上做到这一点,那么答案很简单:您所要求的是不可能的。实现这一点的唯一方法是由要执行此操作的线程进行显式合作


如果以上段落没有阻止您,那么最好的选择是使用ExecutorService并向其提交任务。如果这是您的目标,则可以将服务配置为单线程。

这不可能立即实现。你能举个例子说明你在寻找什么样的行为吗?这听起来像是重新实现计时器或ExecutorService的大量工作:好吧,事实上,在实际的生产代码中,使用ExecutorService是有意义的。但从某种意义上说,人们应该了解这些东西是如何工作的——我不喜欢看到人们使用ExecutorService这样的东西,因为他们认为它很神奇,而且这是做事情的唯一方法。请您解释一下实现ExecutorService的快速算法或任何资源,以便在自定义线程中加入代码?我正在努力实现它。