Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
alx_java2b_20250412
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_java2b_20250412
Commits
dee925e5
Commit
dee925e5
authored
Apr 13, 2025
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
edycja wątków
parent
a1de33df
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
76 additions
and
7 deletions
+76
-7
OpakowywanieSync.java
...IWatki/src/main/java/watki/kolekcje/OpakowywanieSync.java
+1
-1
ProdKons1.java
...ObiektyIWatki/src/main/java/watki/kolekcje/ProdKons1.java
+0
-1
Przeploty.java
...in/java/watki/konta/v1_brak_synchronizacji/Przeploty.java
+1
-2
WyplacanieBezOczekiwania.java
...ta/v3_synchronizacja_blokow/WyplacanieBezOczekiwania.java
+0
-1
WyplacanieBezOczekiwaniaAtomicBoolean.java
...nizacja_blokow/WyplacanieBezOczekiwaniaAtomicBoolean.java
+68
-0
AtomowyLicznik.java
...biektyIWatki/src/main/java/watki/util/AtomowyLicznik.java
+6
-1
Wymiana.java
PC20-ObiektyIWatki/src/main/java/watki/util/Wymiana.java
+0
-1
No files found.
PC20-ObiektyIWatki/src/main/java/watki/kolekcje/OpakowywanieSync.java
View file @
dee925e5
...
@@ -51,7 +51,7 @@ public class OpakowywanieSync {
...
@@ -51,7 +51,7 @@ public class OpakowywanieSync {
synchronizowana
.
remove
(
0
);
synchronizowana
.
remove
(
0
);
}
}
for
(
String
element
:
synchronizowana
)
{
for
(
String
element
:
synchronizowana
)
{
// ...
// ...
// mamy pewność, że w czasie przeglądania inne wątki nie będą ruszać tej listy
// mamy pewność, że w czasie przeglądania inne wątki nie będą ruszać tej listy
}
}
...
...
PC20-ObiektyIWatki/src/main/java/watki/kolekcje/ProdKons1.java
View file @
dee925e5
...
@@ -2,7 +2,6 @@ package watki.kolekcje;
...
@@ -2,7 +2,6 @@ package watki.kolekcje;
import
java.util.concurrent.ArrayBlockingQueue
;
import
java.util.concurrent.ArrayBlockingQueue
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
// Kolejki blokujące mają dodatkowo metody take i put, które działają w sposób blokujący.
// Kolejki blokujące mają dodatkowo metody take i put, które działają w sposób blokujący.
...
...
PC20-ObiektyIWatki/src/main/java/watki/konta/v1_brak_synchronizacji/Przeploty.java
View file @
dee925e5
...
@@ -9,8 +9,7 @@ class Przeploty {
...
@@ -9,8 +9,7 @@ class Przeploty {
final
int
KWOTA
=
10
;
final
int
KWOTA
=
10
;
Osoba
ala
=
new
Osoba
(
"Ala"
,
"Kowalska"
,
LocalDate
.
now
());
Osoba
ala
=
new
Osoba
(
"Ala"
,
"Kowalska"
,
LocalDate
.
now
());
Konto
konto
=
new
Konto
(
1
,
1000_000
,
ala
);
Konto
konto
=
new
Konto
(
1
,
1000_000
,
ala
);
System
.
out
.
println
(
konto
);
System
.
out
.
println
(
konto
);
Thread
wplacacz
=
new
Thread
(()
->
{
Thread
wplacacz
=
new
Thread
(()
->
{
...
...
PC20-ObiektyIWatki/src/main/java/watki/konta/v3_synchronizacja_blokow/WyplacanieBezOczekiwania.java
View file @
dee925e5
...
@@ -3,7 +3,6 @@ package watki.konta.v3_synchronizacja_blokow;
...
@@ -3,7 +3,6 @@ package watki.konta.v3_synchronizacja_blokow;
import
java.io.IOException
;
import
java.io.IOException
;
class
WyplacanieBezOczekiwania
{
class
WyplacanieBezOczekiwania
{
static
volatile
boolean
koniec
=
false
;
static
volatile
boolean
koniec
=
false
;
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
...
...
PC20-ObiektyIWatki/src/main/java/watki/konta/v3_synchronizacja_blokow/WyplacanieBezOczekiwaniaAtomicBoolean.java
0 → 100644
View file @
dee925e5
package
watki
.
konta
.
v3_synchronizacja_blokow
;
import
java.io.IOException
;
import
java.util.concurrent.atomic.AtomicBoolean
;
class
WyplacanieBezOczekiwaniaAtomicBoolean
{
static
final
AtomicBoolean
dzialamy
=
new
AtomicBoolean
(
true
);
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
(
dzialamy
.
get
())
{
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
(
dzialamy
.
get
())
{
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
)
{
}
dzialamy
.
set
(
false
);
wplacacz
.
interrupt
();
wyplacacz
.
interrupt
();
try
{
wplacacz
.
join
();
wyplacacz
.
join
();
}
catch
(
InterruptedException
e
)
{
System
.
err
.
println
(
"INTERRUPTED"
);
}
System
.
out
.
println
(
"na końcu: "
+
konto
);
}
}
PC20-ObiektyIWatki/src/main/java/watki/util/AtomowyLicznik.java
View file @
dee925e5
package
watki
.
util
;
package
watki
.
util
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicInteger
;
public
class
AtomowyLicznik
{
public
class
AtomowyLicznik
{
private
static
AtomicInteger
licznik
;
private
static
AtomicInteger
licznik
;
private
static
final
int
N
=
10_000_000
;
private
static
final
int
N
=
10_000_000
;
private
final
static
AtomicBoolean
systemDostepny
=
new
AtomicBoolean
(
false
);
private
static
class
Watek
implements
Runnable
{
private
static
class
Watek
implements
Runnable
{
public
void
run
()
{
public
void
run
()
{
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
...
@@ -20,7 +23,7 @@ public class AtomowyLicznik {
...
@@ -20,7 +23,7 @@ public class AtomowyLicznik {
// licznik.getAndAdd(3); // try{return x} finally {x+=3}
// licznik.getAndAdd(3); // try{return x} finally {x+=3}
// licznik.get();
// licznik.get();
// licznik.set(5);
// licznik.set(5);
// licznik.compareAndSet(50, 1000); // tylko jeśli aktualna wartość to 50, to ustaw ową wartość 1000
// licznik.compareAndSet(50, 1000); // tylko jeśli aktualna wartość to 50, to ustaw
n
ową wartość 1000
// Aby użycie takiego obiektu było poprawne, należy wykonywać operacje "jednym wywołaniem"
// Aby użycie takiego obiektu było poprawne, należy wykonywać operacje "jednym wywołaniem"
// np. poprawne jest
// np. poprawne jest
...
@@ -49,6 +52,8 @@ public class AtomowyLicznik {
...
@@ -49,6 +52,8 @@ public class AtomowyLicznik {
th1
.
start
();
th1
.
start
();
th2
.
start
();
th2
.
start
();
systemDostepny
.
set
(
true
);
System
.
out
.
println
(
"Uruchomiłem"
);
System
.
out
.
println
(
"Uruchomiłem"
);
try
{
try
{
...
...
PC20-ObiektyIWatki/src/main/java/watki/util/Wymiana.java
View file @
dee925e5
...
@@ -5,7 +5,6 @@ import java.util.concurrent.Exchanger;
...
@@ -5,7 +5,6 @@ import java.util.concurrent.Exchanger;
public
class
Wymiana
{
public
class
Wymiana
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
final
Exchanger
<
String
>
schowek
=
new
Exchanger
<>();
final
Exchanger
<
String
>
schowek
=
new
Exchanger
<>();
Thread
th1
=
new
Thread
(
new
Runnable
()
{
Thread
th1
=
new
Thread
(
new
Runnable
()
{
...
...
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