Garmaine Staff asked 1 year ago
Closed. This question needs details or clarity. It is not currently accepting answers.

Want to improve this question? Add details and clarify the problem by editing this post.

Closed 1 hour ago.

I am creating a java program that is supposed to simulate a species' survival on its ability to get food. I just started, and I want to use threads to simulate their day. If an organism can get food in a day, then it survives, if not, it dies. So I created a Species class and tried to implement Runnable from there, but it didn't work:

public class Species implements Runnable {
    public float chanceOfFood;
    public boolean state;

    public Species(float chance) {
        this.chanceOfFood = chance;
        this.state = true;

    public void run() {
        Random r = new Random(100);
        int temp = r.nextInt();
        if (!(temp <= chanceOfFood))
            state = false;

For some reason, my code that creates this thread:

   Thread r = new Thread(de_species.get(i));

It does not work, I think because I have other variables in my Species class. Here is my driver class:

public class PopulationOfSpeciesSimulator {

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(;
        System.out.println("Input the chance of finding food. It must be between 0 and 100");
        int chanceOfFood = in.nextInt();
        int population = 10;

        ArrayList<Species> de_species = new ArrayList<Species>();
        for (int i = 0; i < 25; i++)
             de_species.add(new Species(chanceOfFood));

        while (...) {
            for (int i = 0; i < population; i++) {
                if (de_species.get(i).state) {
                    Thread r = new Thread(de_species.get(i));

I am wishing to change the state of the Species if it fails to "get food". The while loop should keep running as long as at least one species in the arraylist has a state of true.