Since neither thread ever finishes, the joins run consecutively. You wait 1 minute in the first join. Then you issue the second join which waits 1 minute.
Join is not your solution. Try wait/notify.
With a max of 60000 milliseconds. You can wait up to 30 seconds for the first thread to notify you and decrement the max wait time by how long it actually took. Then you can wait up to "what is left" milliseconds for the second thread to notify you.