java 中 如何让一个方法内最多只能有两个线程访问

 我来答
heracer
2015-03-28 · TA获得超过1万个赞
知道大有可为答主
回答量:7994
采纳率:0%
帮助的人:6178万
展开全部

大体思想就是在方法中设置一个计数器,然后加一个同步锁synchronized,其中判断大于两个线程的时候线程休眠。具体代码如下:

Object sc = new Object();  
//计数器
int count = 0;  
  
public void fun(Thread t) {  
    synchronized (sc) {  
    //因为计数器开始是0,所以判断大于等于2就休眠
        while (count >= 2) {  
            try {  
                sc.wait();  
            } catch (InterruptedException e) {  
                e.printStackTrace();
            }  
        }  
        count++;  
    }  
    // 业务 
    System.out.println(t.getName());  
    System.out.println(t.getId()); 
    // 更新访问计数并唤醒等待的线程  
    count--;  
    sc.notifyAll();  
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式