Yes, ABCL threads are Java threads underneath.
Store the per-thread data in a java.lang.ThreadLocal variable, then it will
be garbage collected when the thread ends.
(If Thread A may want to access Thread B's per-thread data, then that'll
need more thought.)
The bordeaux-threads library's MAKE-LOCK creates a Java ReentrantLock.
Follow the usual rules for portably and correctly accessing data from
multiple threads.
https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html
Vibhu