protected void getClosePlants() {
	Thread radarThread = new Thread(new Runnable() {
		@SuppressWarnings("unchecked")
		@Override
		public void run() {

		    // True if this creature is alive
		    while (isAlive()) {
			// clone the Grid.plants, the centralised repository of
			// plants, so there will less concurrent conflict
			Vector<Plant> pla;
			synchronized (Grid.plants) {
			    pla = (Vector<Plant>) Grid.plants.clone();

			    for (Iterator<Plant> iterator = pla.iterator(); iterator
				     .hasNext();) {
				Plant plant = iterator.next();

				Point pos = plant.getPosition();
				try {
				    if (isPlantInRange(pos)) {

					if (plants.size() < PLANT_LIMIT) {
					    setPosition(pos);
					    plant.take();
					    plants.add(plant);
					    iterator.remove();

					    synchronized (Grid.plants) {
						// assigns the remaining plants to
						// the
						// main
						// plant repository
						Grid.plants = pla;
					    }
					}
				    }
				} catch (ConcurrentModificationException e2) {
				    continue;
				}
			    }
			}
		    }
		}
	    });
	radarThread.setDaemon(true);
	radarThread.start();
    }