Weld apparently creates Runtime.getRuntime().availableProcessors() bootstrap threads for each deployment (but not sub-deployment).
I managed to find an easy way to disable this behavior by adding the require-bean-descriptor="true" attribute to the weld section of the standalone.xml:
This way not a single thread is created for weld.
However i'm still looking for a way to get rid of the file-watcher threads.
I had a look at the source and apparently a file watcher is created for all exploded deployments.
But actually my deployments are not exploded but wildfly seems to treat the extracted deployments below the tmp/vfs folder as exploded.
I don't see a reason why a file watcher is needed for those (why should anyone modify the files below tmp/vfs from outside?).
Thanks Martin for you help.
I have created a jira issue to make the thread pools wildfly global: https://issues.jboss.org/browse/WFLY-4653
Stuart Douglas has helped me to clarify the filewatcher problem and apparently it's a bug that the extracted deployments below tmp are marked as exploded internally.
He has created an issue for it (and submitted a pull request already): https://issues.jboss.org/browse/WFCORE-706
Unfortunately there is no workaround for the issue so i think we have to patch wildfly to resolve this.