@Override
	    public void run(){   
	       try{
	    	   System.out.println("HireWorkerServer is waiting for new workers on the port: "+this.portNum);
	           while(running){
	               Socket workerSocket = serverSocket.accept();
	               System.out.println("worker: "+workerSocket.getInetAddress()+":"+workerSocket.getPort()+" join in");
	               master.workerSocMap.put(workerCnt, workerSocket); //add the worker soc with workerCnt as the ID
	             
	               //create the specific manage server for the new worker
	               WorkerManagerServer managerServer = new WorkerManagerServer(master,workerCnt,workerSocket); 
	               master.workerMangerServerMap.put(workerCnt, managerServer);
	               Thread t =  new Thread(managerServer);
	               t.start();
	               master.workerManagerThreadMap.put(workerCnt,t);
	               workerCnt++;
	           } 
	       }catch(IOException e){
	           e.printStackTrace();
	           System.out.println("socket server accept failed");
	       }
	       try {
	        serverSocket.close();
	       } catch (IOException e) {
	        // TODO Auto-generated catch block
	        e.printStackTrace();
	        System.out.println("socket Server failed to close");
	    }
	        
	    }