Hello.
I have a weird problem that happens only wih tomcat 9.0.0-M17+:
- I need to process a parallel java stream inside a custom ForkJoinPool
If I run the code with 9.0.0-M15, I see that all the threads are properly
created using my factory.
If I run the code with 9.0.0-M17+, some of the threads that are used in the
Stream processing are not coming from my factory, but instead are instance
of
org.apache.catalina.startup.SafeForkJoinWorkerThreadFactory$SafeForkJoinWorkerThread.
Sample prototype code:
ForkJoinPool pool = new ForkJoinPool(2, p -> new
MyForkJoinWorkerThread(p), null, false);
pool.submit(() -> {
Stream<T> stream = createMyStream();
return stream.parallel().map(t -> {
System.out.println("THREAD: " +
Thread.currentThread().getClass());
return t;
}).collect(Collectors.toArrayList());
}).get();
It seems that something from the newer tomcats "interferes" with the
ForkJoinPool mechanism in some weird way.
Can someone help me to understand what's going on?
thanks,
--fb