Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Aplikacija {
- public static final Object lock=new Object();
- public static void main(String[] args) {
- Banka banka = new Banka(20000);
- Korisnik k1,k2,k3,k4;
- k1=new Korisnik("aaa",16000);
- k2=new Korisnik("bbb",14000);
- k3=new Korisnik("ccc",10000);
- k4=new Korisnik("ddd",11000);
- Thread t1,t2,t3,t4,t5;
- t1=new Thread(k1);
- t2=new Thread(k2);
- t3=new Thread(k3);
- t4=new Thread(k4);
- t5=new Thread(banka);
- t5.setDaemon(true);
- t5.start();
- t1.start();
- t2.start();
- t3.start();
- t4.start();
- }
- }
- ///////////////////////////////////////////////
- public class Banka implements Runnable {
- private static double stanje_banke;
- public static boolean pristupljeno=false;
- public Banka(double stanje) {
- stanje_banke=stanje;
- }
- public Banka() {
- }
- public synchronized static void umanji_stanje(double novac){
- pristupljeno=true;
- stanje_banke-=novac;
- }
- public static double getStanje_banke() {
- return stanje_banke;
- }
- @Override
- public void run() {
- while (true){
- try {
- stanje_banke+=2000;
- if(stanje_banke>0){
- synchronized (Aplikacija.lock){
- Aplikacija.lock.notify();
- }
- }
- System.out.println("STANJE NA BANKOVNOM RACUNUN JE UVECANO, TRENUTNO STANJE JE: "+stanje_banke);
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- ////////////////////////////////////////////
- import java.text.DecimalFormat;
- import java.text.NumberFormat;
- public class Korisnik implements Runnable{
- private String broj_racuna;
- private double stanje_racuna;
- public Korisnik(String broj_racuna, double stanje_racuna) {
- this.broj_racuna = broj_racuna;
- this.stanje_racuna = stanje_racuna;
- }
- public Korisnik() {
- broj_racuna=null;
- stanje_racuna=0;
- }
- @Override
- public void run() {
- NumberFormat formater = new DecimalFormat("#0.00");
- try {
- while (stanje_racuna>0){
- double rng=Math.random()*500+500;
- if(stanje_racuna-rng<0){
- System.out.println("NEMA DOVOLJNO RASPOLOZIVIH SREDSTAVA NA RACUNU: "+broj_racuna+ "("+formater.format(stanje_racuna)+"-"+formater.format(rng)+")");
- break;
- }
- if(Banka.getStanje_banke()<0){
- System.out.println("BANKA NEMA DOVOLJNO NOVCA DA ISPLATI RACUNU: "+broj_racuna);
- synchronized (Aplikacija.lock){
- Aplikacija.lock.wait();
- }
- }
- synchronized (Aplikacija.lock){
- if(Banka.pristupljeno){
- Thread.sleep(10);
- }
- Banka.pristupljeno=false;
- Banka.umanji_stanje(rng);
- stanje_racuna-=rng;
- }
- System.out.println(formater.format(rng)+" je skinuto sa racuna: "+broj_racuna+", ostalo je: "+formater.format(stanje_racuna)+" a u BANCI: " +formater.format(Banka.getStanje_banke()));
- Thread.sleep(1000);
- }
- }catch (InterruptedException e){
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment