A few versions ago, I made some changes to SkeletonDataAsset so a manager can have the threadsafe methods to call. Loading via threads is doable where threads are ok. (resulting speedup was marginal. Like around 10% something, strangely.)
But the threading structure is heavily dependent on how your game's loading is architectured so we didn't include any out-of-the-box solutions.
See the methods:
// Get stuff from your SkeletonDataAsset
byte[] bytes = skeletonDataAsset.skeletonJson.bytes; // for binary
AttachmentLoader attachmentLoader = new AtlasAttachmentLoader(skeletonDataAsset.atlasArray);
float scale = skeletonDataAsset.scale;
SkeletonData loadedSkeletonData = SkeletonData.ReadSkeletonData(bytes, attachmentLoader, scale); // This is pure C#. No Unity APIs. Call this in a thread.
skeletonData.InitializeWithData(loadedSkeletonData); // This one is Unity stuff. Don't call in a thread.
These are currently internal
methods so this script needs to be in the same assembly as your Spine-Unity runtime. eg, if you moved that to your Plugins folder, the threaded loader's script in Unity will have to be in that folder too.
There have been some changes since then, but we've tried to make stuff threadsafe where it was obvious that it wasn't.