Race free shutdown in multi-threaded programs is always very hard. At
Google some programs and libraries simply didn't support it: for servers,
the cost in terms of bugs and extra code was deemed to outweigh the
benefits, so the only "supported" way for a process to end was for it to be
killed.

JavaFX does not have that luxury. It must be able to shut down cleanly
without races. In this case, the message is probably harmless: who cares if
a render job doesn't complete if you're busy tearing down process state? So
perhaps Quantum should just set a custom reject handler that ignores the
issue instead of throwing.


On Mon, Aug 3, 2015 at 4:10 PM, Tom Eugelink <t...@tbee.org> wrote:

> Working on a new skin for JFXtras Agenda... What is JavaFX trying to tell
> me with this exception?
>
> java.util.concurrent.RejectedExecutionException: Task
> com.sun.javafx.tk.quantum.PaintRenderJob@33cf88 rejected from
> com.sun.javafx.tk.quantum.QuantumRenderer@1133212[Terminated, pool size =
> 0, active threads = 0, queued tasks = 0, completed tasks = 30]
>     at
> java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
>     at
> java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
>     at
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
>     at
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>     at
> com.sun.javafx.tk.quantum.QuantumRenderer.submitRenderJob(QuantumRenderer.java:218)
>     at
> com.sun.javafx.tk.quantum.QuantumToolkit.addRenderJob(QuantumToolkit.java:467)
>     at com.sun.javafx.tk.quantum.ViewScene.repaint(ViewScene.java:140)
>     at
> com.sun.javafx.tk.quantum.PaintCollector.renderAll(PaintCollector.java:435)
>     at
> com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:526)
>     at
> com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:505)
>     at
> com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$400(QuantumToolkit.java:334)
>     at
> com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$47/14510047.run(Unknown
> Source)
>     at
> com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
>     at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
>     at
> com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
>     at com.sun.glass.ui.win.WinApplication$$Lambda$43/19282349.run(Unknown
> Source)
>     at java.lang.Thread.run(Thread.java:745)
>

Reply via email to