20220530_Java单例模式案例_负载均衡器

本例是懒汉模式
负载均衡器类

import java.util.ArrayList;
import java.util.Random;

class LoadBalancer { /**这里权限不写,默认,就是包内访问*/
    /**懒汉模式*/
    private static LoadBalancer lbInstance = null;
    /**成员变量,不是静态变量*/
    private ArrayList serverList = null;

    public LoadBalancer() {
        serverList = new ArrayList();
    }

    public static LoadBalancer getLbInst() {
        if (lbInstance == null){
            lbInstance = new LoadBalancer();
        }else {
            return lbInstance;
        }
        return lbInstance;
    }

    public void addServer(String server){
        serverList.add(server);
    }

    public void rmServer(String server){
        serverList.remove(server);
    }

    public String getServer(){
        Random rd = new Random();
        int i = rd.nextInt(serverList.size());
        return (String) serverList.get(i);
    }

}

用户类

class Client {/**默认权限,包内访问*/
    public static void main(String[] args) {
        LoadBalancer lb1,lb2,lb3,lb4;
        lb1 = LoadBalancer.getLbInst();
        lb2 = LoadBalancer.getLbInst();
        lb3 = LoadBalancer.getLbInst();
        lb4 = LoadBalancer.getLbInst();

        if (lb1 == lb2 && lb2 == lb3 && lb3 == lb4){
            System.out.println("All them are the same LoadBalancer.");
        }

        lb1.addServer("Server 1");
        lb1.addServer("Server 2");
        lb1.addServer("Server 3");
        lb1.addServer("Server 4");

        for (int i = 0; i < 12; i++) {
            String server = lb1.getServer();
            System.out.println("Distribute task to: "+ server);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值