This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
Yes, you could certainly use AJAX to implement "a way for users to come back later and check progress". You could also use a meta refresh tag in your HTML, though, so AJAX isn't the only way.
As for the tutorial, I'm sure you can find one but the concept isn't difficult.
The initial request starts a thread running and puts a reference to the thread, or to some proxy for the thread, into the user's session.
Subsequent requests get the thread from the session. If it is still alive, the response says "Still running", otherwise the response says "Finished".
Of course you can expand on this basic structure to return the result of the long-running process, or to return the percentage complete if the long-running process can produce that information. And if you expect the user to close the browser and come back several hours later, thereby in a new session, then you would have to store the reference to the thread in some place other than the session where it could be accessed based on the user ID or something like that. This would also be necessary if your server was distributed over multiple machines; the thread would be running on one machine, but requests processed by other machines in the cluster would need to find out about it. (That's why I said "proxy for the thread".)