保证线程执行顺序先到先得

har*_*are 1 java concurrency multithreading

我有一个从调用外部服务的servlet调用的代码.当然,不能保证服务返回响应需要多长时间.我需要确保一次只能执行一次对此服务的调用,但是servlet容器当然可以运行对servlet的并发请求.我想保证请求的优先级是以先到先得的服务器为基础处理单个文件.因此,我对外部servlet的调用是否同步是不够的,因为一旦当前调用完成,就不能保证哪个线程进入下一个调用.

有任何想法吗?

Pet*_*rey 5

你可以用一个公平的锁

Lock lock = new ReentrantLock(true);
Run Code Online (Sandbox Code Playgroud)

这会按照尝试的顺序进行锁定.