Hi Keith,
Great question. In theory libxml2 supports multiple threads, but only one-thread-per-document (that is, you can't have two threads modifying the same document at the same time). More info on libxml2l thread support here:
However, Nokogiri doesn't do a good job of releasing the GVL when it enters libxml2 functions, so Ruby threads won't get you very far. Ractors probably will allow you to do concurrent processing, though!
JRuby will definitely support multiple threads.
I'd love to hear what you learn and if you determine any good practices.