Java watki pomocy

0

Witam,

Dostałem na uczelni temat mini projektu, który jest następujący:

  1. Bank – naliczanie odsetek lokat
    a. klienci to wątki wykonujące w pętli:
    i. pracują (sleep(losowa wartość))
    ii. wpłacają na lokatę losową kwotę
    iii. pracują (sleep(losowa wartość))
    iv. sprawdza stan konta
    b. bank to jeden wątek, który co stały czas, przegląda wszystkie konta i nalicza
    odsetki lokat

Problem polega na tym ze nie do końca wiem jak to ugryźć. Moja próba rozwiązania problemu:

 

package bank;


import java.util.concurrent.TimeUnit;

public class Klient extends Thread {

	private Lokaty nazwa;
	private boolean praca = false;
	public double k;
	private static int threadCount = 0;
	private String name;
	
/*	public void stop(){
		
		praca = true;
		
	} */

	public Klient(Lokaty nazwa){
		this.nazwa = nazwa;
	}
public void wplac(){
		
		k = (nazwa.generator.nextDouble()*10);
		nazwa.stanKontaBezOdsetek = nazwa.stanKontaBezOdsetek + k; 
		System.out.println(getName() + " wplacilem " + k);
		System.out.println(getName() + " Stan konta po wplacie: " + nazwa.stanKontaBezOdsetek);
		nazwa.wplata = true;
	
}

public void pracuj(){
	System.out.println("pracuje");
	try {
		Thread.sleep(nazwa.generator.nextInt(10000));
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
}
		
	public void run(){
		while (!Thread.interrupted()){
			pracuj();
		wplac();
		pracuj();
		}
	}

}

package bank;

import java.util.Random;
import java.util.concurrent.TimeUnit;
public class Lokaty {
	private double k;
	public boolean wplata = false;
	Random generator = new Random();
	
	
	public static double stanKontaBezOdsetek;
	public static double stanKontaZOdsetkami;
}


package bank;

public class Bank implements Runnable {

	private Lokaty lokaty;
	//private boolean praca = false;
	
	public Bank(Lokaty lokaty){
		this.lokaty = lokaty;
	}
	
	public void run(){
		while (!Thread.interrupted()){
		//lokaty.doliczOdsetki();
		}
	}
	

} 

Niestety, z powodu mojego braku zrozumienia, 2 klientów pracuje na jednej lokacie, co jest efektem niepożądanym. Bardzo prosiłbym o pomoc w naprawieniu tego problemu, bądź nakreślenie czy ten sposób w ogóle ma sens.

0

Czego się spodziewasz lecąc na static'ach?

0

Ok, naprawione DZIĘKUJE :), jednak teraz nie mam zupełnie pojęcia jak zabrać się za wątek Bank tak aby przejrzał wszystkie lokaty, ponieważ działa tylko na jednej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1