Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
alx_mszczonow_1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
alx_mszczonow_1
Commits
739e83fa
Commit
739e83fa
authored
Jul 11, 2023
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Synchronizacja kont - v0
parent
6d087373
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
248 additions
and
0 deletions
+248
-0
BrakSrodkow.java
src/main/java/p28_watki/b_synchro/v0_brak/BrakSrodkow.java
+13
-0
Konto.java
src/main/java/p28_watki/b_synchro/v0_brak/Konto.java
+55
-0
Osoba.java
src/main/java/p28_watki/b_synchro/v0_brak/Osoba.java
+66
-0
Przeploty.java
src/main/java/p28_watki/b_synchro/v0_brak/Przeploty.java
+48
-0
WyplacanieBezOczekiwania.java
...p28_watki/b_synchro/v0_brak/WyplacanieBezOczekiwania.java
+66
-0
No files found.
src/main/java/p28_watki/b_synchro/v0_brak/BrakSrodkow.java
0 → 100644
View file @
739e83fa
package
p28_watki
.
b_synchro
.
v0_brak
;
public
class
BrakSrodkow
extends
Exception
{
private
static
final
long
serialVersionUID
=
5262944731342409658L
;
public
BrakSrodkow
()
{
super
();
}
public
BrakSrodkow
(
String
message
)
{
super
(
message
);
}
}
src/main/java/p28_watki/b_synchro/v0_brak/Konto.java
0 → 100644
View file @
739e83fa
package
p28_watki
.
b_synchro
.
v0_brak
;
class
Konto
{
private
final
int
numer
;
private
int
saldo
;
private
Osoba
wlasciciel
;
public
Konto
(
int
numer
,
int
saldo
,
Osoba
wlasciciel
)
{
this
.
numer
=
numer
;
this
.
saldo
=
saldo
;
this
.
wlasciciel
=
wlasciciel
;
}
public
Osoba
getWlasciciel
()
{
return
wlasciciel
;
}
public
void
setWlasciciel
(
Osoba
wlasciciel
)
{
this
.
wlasciciel
=
wlasciciel
;
}
public
int
getNumer
()
{
return
numer
;
}
public
int
getSaldo
()
{
return
saldo
;
}
public
String
toString
()
{
return
"Konto nr "
+
numer
+
", saldo: "
+
saldo
+
", wł.: "
+
wlasciciel
;
}
public
void
wplata
(
int
kwota
)
{
if
(
kwota
<
0
)
{
throw
new
IllegalArgumentException
(
"Ujemna kwota "
+
kwota
+
" we wpłacie"
);
}
saldo
+=
kwota
;
}
public
void
wyplata
(
int
kwota
)
throws
BrakSrodkow
{
if
(
kwota
<
0
)
{
throw
new
IllegalArgumentException
(
"Ujemna kwota "
+
kwota
+
" w wypłacie"
);
}
if
(
kwota
>
saldo
)
{
throw
new
BrakSrodkow
(
"Brak środków na koncie nr "
+
numer
);
}
saldo
-=
kwota
;
}
}
src/main/java/p28_watki/b_synchro/v0_brak/Osoba.java
0 → 100644
View file @
739e83fa
package
p28_watki
.
b_synchro
.
v0_brak
;
import
java.time.LocalDate
;
import
java.time.Period
;
class
Osoba
{
private
String
imie
,
nazwisko
;
private
LocalDate
dataUrodzenia
;
public
Osoba
()
{
}
Osoba
(
String
imie
,
String
nazwisko
)
{
this
.
imie
=
imie
;
this
.
nazwisko
=
nazwisko
;
}
public
Osoba
(
String
imie
,
String
nazwisko
,
LocalDate
dataUrodzenia
)
{
this
.
setImie
(
imie
);
this
.
nazwisko
=
nazwisko
;
this
.
dataUrodzenia
=
dataUrodzenia
;
}
public
Osoba
(
String
imie
,
String
nazwisko
,
String
dataUrodzenia
)
{
// wywołanie innego konstruktora z tej samej klasy
this
(
imie
,
nazwisko
,
LocalDate
.
parse
(
dataUrodzenia
));
}
public
int
obliczWiek
()
{
LocalDate
dzisiaj
=
LocalDate
.
now
();
Period
wiek
=
Period
.
between
(
dataUrodzenia
,
dzisiaj
);
return
wiek
.
getYears
();
}
@Override
public
String
toString
()
{
return
imie
+
" "
+
nazwisko
+
" ur."
+
dataUrodzenia
;
}
public
String
kimJestes
()
{
return
"Jestem osobą"
;
}
public
String
getImie
()
{
return
imie
;
}
public
String
getNazwisko
()
{
return
nazwisko
;
}
public
LocalDate
getDataUrodzenia
()
{
return
dataUrodzenia
;
}
public
void
setImie
(
String
imie
)
{
if
(
imie
==
null
||
imie
.
isEmpty
())
{
throw
new
IllegalArgumentException
(
"imię nie może być puste"
);
}
this
.
imie
=
imie
;
}
public
void
setNazwisko
(
String
nazwisko
)
{
this
.
nazwisko
=
nazwisko
;
}
}
src/main/java/p28_watki/b_synchro/v0_brak/Przeploty.java
0 → 100644
View file @
739e83fa
package
p28_watki
.
b_synchro
.
v0_brak
;
import
java.time.LocalDate
;
class
Przeploty
{
public
static
void
main
(
String
[]
args
)
{
final
int
N
=
100_000
;
final
int
KWOTA
=
10
;
Osoba
ala
=
new
Osoba
(
"Ala"
,
"Kowalska"
,
LocalDate
.
now
());
Konto
konto
=
new
Konto
(
1
,
1000000
,
ala
);
System
.
out
.
println
(
konto
);
Thread
wplacacz
=
new
Thread
(()
->
{
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
konto
.
wplata
(
KWOTA
);
}
});
Thread
wyplacacz
=
new
Thread
(()
->
{
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
try
{
konto
.
wyplata
(
KWOTA
);
}
catch
(
BrakSrodkow
e
)
{
System
.
err
.
println
(
e
.
getMessage
());
}
}
});
System
.
out
.
println
(
"Uruchamiam wątki"
);
wplacacz
.
start
();
wyplacacz
.
start
();
System
.
out
.
println
(
"Czekam na zakończenie"
);
try
{
wplacacz
.
join
();
wyplacacz
.
join
();
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
System
.
out
.
println
(
"Wątki zakończone, konto na końcu:"
);
System
.
out
.
println
(
konto
);
}
}
src/main/java/p28_watki/b_synchro/v0_brak/WyplacanieBezOczekiwania.java
0 → 100644
View file @
739e83fa
package
p28_watki
.
b_synchro
.
v0_brak
;
import
java.io.IOException
;
class
WyplacanieBezOczekiwania
{
static
volatile
boolean
koniec
=
false
;
public
static
void
main
(
String
[]
args
)
{
final
Osoba
ala
=
new
Osoba
(
"Ala"
,
"Kowalska"
,
"2001-01-01"
);
final
Konto
konto
=
new
Konto
(
1
,
1700
,
ala
);
System
.
out
.
println
(
"początek "
+
konto
);
Thread
wplacacz
=
new
Thread
(
new
Runnable
()
{
public
void
run
()
{
while
(!
koniec
)
{
konto
.
wplata
(
1000
);
System
.
out
.
println
(
"wpłacacz: wpłaciłem 1000, saldo = "
+
konto
.
getSaldo
());
try
{
Thread
.
sleep
(
4000
);
}
catch
(
InterruptedException
e
)
{
}
}
}
});
Thread
wyplacacz
=
new
Thread
(
new
Runnable
()
{
public
void
run
()
{
while
(!
koniec
)
{
try
{
konto
.
wyplata
(
100
);
}
catch
(
BrakSrodkow
e
)
{
System
.
err
.
println
(
"BRAK ŚRODKÓW"
);
}
System
.
out
.
println
(
"wypłacacz: wypłaciłem 100, saldo = "
+
konto
.
getSaldo
());
try
{
Thread
.
sleep
(
200
);
}
catch
(
InterruptedException
e
)
{
}
}
}
});
wplacacz
.
start
();
wyplacacz
.
start
();
System
.
out
.
println
(
"Wątki wystartowały"
);
System
.
out
.
println
(
"Naciśnij enter aby zakończyć"
);
try
{
System
.
in
.
read
();
}
catch
(
IOException
e1
)
{
}
koniec
=
true
;
try
{
wplacacz
.
join
();
wyplacacz
.
join
();
}
catch
(
InterruptedException
e
)
{
System
.
err
.
println
(
"INTERRUPTED"
);
}
System
.
out
.
println
(
"na końcu: "
+
konto
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment