You can reuse URLs that were previously 301 redirected, but only if the 301 was configured with directives to limit caching.
As others have noted, some browsers will cache the 301 response without an expiration date, and without revalidating to check if it has changed, but only in the absence of explicit cache directives.
For this reason, the best practice is to always set cache directive headers for every 301. These headers are often used to forbid caching entirely:
Cache-Control: no-store, no-cache, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Assuming only HTTP/1.1 and modern browsers, I believe this minimal header achieves the same thing:
It may be safe to use a more permissive
Cache-Control header in order to allow reasonable temporary caching.