private void load() {
        
        int shipFreeSpace = getFreeSpace();
        boolean loading = true; 
        Dispatcher.informShipMoored(name);

        try {
            lock.lock();
            log.info(Dispatcher.informShipAction(name, loading));
            if (shipFreeSpace <= port.getLoading()) {
                cargo += shipFreeSpace;
                port.decreaseLoading(shipFreeSpace);

            } else {
                cargo += port.getLoading();
                port.setLoading(0);
            }
        } finally {
            log.info(Dispatcher.informShipFinished(name, loading));
            Dispatcher.informShipSailingAway(name);
            lock.unlock();
            Dispatcher.makeReport(this, port);
        }
    }