The question you ask in the title and the one you ask in the body are different.
The standard way for another thread is to find out if the thread is working, either wait for it or poll it with is_runningand / or is_joinabledepending on your specific needs.
If all you need to do is print i'm done, make sure that this is the last statement executed in the body of the stream and will be printed.
threads->create(sub {
print "i'm finished\n";
});