Easy Java
Open in Telegram
ΠΡΡΡΠΈΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π‘ΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ: @heywan_n1 Π¦Π΅Π½Ρ: @heywan_media Π Π΅ΠΊΠ»Π°ΠΌΠ° Π½Π° Π±ΠΈΡΠΆΠ΅: https://telega.in/c/+r8kkGSypBY84MmIy
Show more4 939
Subscribers
+424 hours
-177 days
-1830 days
Posts Archive
4 939
π©βπ» Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ CyclicBarrier Π² Java ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
CyclicBarrier β ΡΡΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°
java.util.concurrent, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΡΡΠΏΠΏΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ CountDownLatch, Π±Π°ΡΡΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ β ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΡΠΎΡΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ½ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈ Π³ΠΎΡΠΎΠ² ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠΈΠΊΠ»Ρ.β’ Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Β«ΡΠΎΡΠΊΠ°Ρ Π²ΡΡΡΠ΅ΡΠΈΒ» β’ ΠΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π±Π°ΡΡΠ΅ΡΠ° β’ ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΡΠ°ΠΏΠΎΠ² ΡΠ°Π±ΠΎΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΠ°Ρ β‘οΈ ΠΡΠΈΠΌΠ΅Ρ:
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class Main {
public static void main(String[] args) {
CyclicBarrier barrier = new CyclicBarrier(3, () ->
System.out.println("ΠΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ Π±Π°ΡΡΠ΅ΡΠ°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ!")
);
Runnable task = () -> {
try {
System.out.println(Thread.currentThread().getName() + " Π³ΠΎΡΠΎΠ²");
barrier.await();
System.out.println(Thread.currentThread().getName() + " ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ");
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
};
new Thread(task, "ΠΠΎΡΠΎΠΊ 1").start();
new Thread(task, "ΠΠΎΡΠΎΠΊ 2").start();
new Thread(task, "ΠΠΎΡΠΎΠΊ 3").start();
}
}
π CyclicBarrier ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°Π³ΠΈ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ , ΡΠΈΠΌΡΠ»ΡΡΠΈΡΡ , ΠΈΠ»ΠΈ ΠΈΠ³ΡΠ°Ρ Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.β‘οΈ Easy Java | #Π’Π΅ΠΎΡΠΈΡ
4 939
β ΠΠΎΠΏΡΠΎΡ Ρ ΡΠΎΠ±Π΅ΡΠ°
ΠΠΎΠ³Π΄Π° ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CopyOnWriteArrayList Π² Java?
ΠΡΠΈΠΌΠ΅Ρπ½
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class Main {
public static void main(String[] args) {
List<String> list = new CopyOnWriteArrayList<>();
list.add("A");
list.add("B");
for (String s : list) {
list.add("C"); // Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ConcurrentModificationException
}
System.out.println(list);
}
}
ΠΡΠ²Π΅Ρπ½
CopyOnWriteArrayList β ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ List, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ½Π° ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π°: β ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΌΠ°Π»ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ β Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ConcurrentModificationException ΠΏΡΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ β Π²Π°ΠΆΠ½Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π±Π΅Π· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ π ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β Π²ΡΡΠΎΠΊΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.β‘οΈ Easy Java | #Π‘ΠΎΠ±Π΅Ρ
4 939
π©βπ» Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ CountDownLatch Π² Java ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
CountDownLatch β ΡΡΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° java.util.concurrent, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ°Ρ ΡΠ²ΠΎΠΈ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΡΡΡΡΠΈΠΊΠΎΠΌ, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² countDown() ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π΅Π³ΠΎ Π½Π° 1. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΡΠΈΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Π½ΡΠ»Ρ β Π²ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.β’ Π£Π΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² β’ ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ β’ ΠΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ β‘οΈ ΠΡΠΈΠΌΠ΅Ρ:
import java.util.concurrent.CountDownLatch;
public class Main {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(3);
Runnable worker = () -> {
System.out.println(Thread.currentThread().getName() + " Π·Π°Π²Π΅ΡΡΠΈΠ» ΡΠ°Π±ΠΎΡΡ");
latch.countDown();
};
new Thread(worker, "ΠΠΎΡΠΎΠΊ 1").start();
new Thread(worker, "ΠΠΎΡΠΎΠΊ 2").start();
new Thread(worker, "ΠΠΎΡΠΎΠΊ 3").start();
latch.await(); // ΠΆΠ΄ΡΠΌ, ΠΏΠΎΠΊΠ° ΡΡΡΡΡΠΈΠΊ Π½Π΅ ΡΡΠ°Π½Π΅Ρ 0
System.out.println("ΠΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΡ");
}
}
π CountDownLatch ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ΅ΡΡΠ°Ρ , ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ΠΈ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ°ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.β‘οΈ Easy Java | #Π’Π΅ΠΎΡΠΈΡ
4 939
β ΠΠΎΠΏΡΠΎΡ Ρ ΡΠΎΠ±Π΅ΡΠ°
Π§Π΅ΠΌ ReentrantLock ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ synchronized Π² Java?
ΠΡΠΈΠΌΠ΅Ρπ½
import java.util.concurrent.locks.ReentrantLock;
public class Main {
private static final ReentrantLock lock = new ReentrantLock();
private static int counter = 0;
public static void main(String[] args) {
Runnable task = () -> {
lock.lock();
try {
counter++;
} finally {
lock.unlock();
}
};
new Thread(task).start();
new Thread(task).start();
}
}
ΠΡΠ²Π΅Ρπ½
ReentrantLock β ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΈΠ· java.util.concurrent.locks, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ΅ΠΌ synchronized: β ΠΠΎΠΆΠ½ΠΎ ΠΏΡΡΠ°ΡΡΡΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠΌ (tryLock) β ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ (Condition) β ΠΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ Π·Π°Ρ Π²Π°ΡΠ° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ π Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ synchronized, ReentrantLock ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° lock() ΠΈ unlock(), ΡΡΠΎ Π΄Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ.β‘οΈ Easy Java | #Π‘ΠΎΠ±Π΅Ρ
4 939
π¨π¨π¨π¨π¨π¨π¨π¨π¨π¨
ΠΠ°Π½Π°Π»Ρ Ρ Junior IT Π²Π°ΠΊΠ°Π½ΡΠΈΡΠΌΠΈ
ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΡ ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ ΡΠ²ΠΎΠΉ ΠΎΡΡΠ΅Ρ π€
1. Π‘ΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΏΠΎ Π ΠΎΡΡΠΈΠΈ ΠΈ ΠΌΠΈΡΡ
2. IT Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΏΠΎ Π‘ΠΠ
3. IT ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ Π‘ΠΠ
4. IT ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π²ΠΎΠ»ΠΎΠ½ΡΠ΅ΡΡΡΠ²Π°
5. IT ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠΎΠΏΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ
ΠΌΠΈΡΠ°
6. Π£Π΄Π°Π»ΡΠ½Π½ΡΠ΅ IT Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ
7. Python Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ
8. ΠΠΠΠ’ΠΠ₯ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ
9. Design Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ
10. QA Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ
11. Junior Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ
12. Frontend Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠΎΠ±Π΅ΡΠΎΠ²
13. ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ²
14. ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Π² ΡΡΡΡΠΊΠΈΡ
ΡΡΠ°ΡΡΠ°ΠΏΠ°Ρ
Π·Π° Π³ΡΠ°Π½ΠΈΡΠ΅ΠΉ
15. ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ DevOps
16. ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π½Π° Π₯Π₯.Π Π£
4 939
ΠΠΉΡΠΈΡΠ½ΠΈΠΊΠΈ Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΠΠ₯#Π― π΅π΅
ΠΠ΅ Π²ΡΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΠ΅ Ρ
Π²Π°ΡΠΊΠΈΠ΅.
ΠΡΠΎ Ρ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ ΠΈ ΡΡΡΠΊΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Π²Π½ΡΡΡΠΈ.
πΌ Π ΡΠ½ΠΎΠΊ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠΊΡΠΏΠ°Π΅Ρ ΠΠ Π·Π½Π°Π½ΠΈΡ.
ΠΠ½ ΠΏΠΎΠΊΡΠΏΠ°Π΅Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΡΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈΡ
Π² ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ
ΠΠΈΠ·Π½Π΅Ρ-Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΎΡ β ΠΊΠ°Π½Π°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ Π² IT, Π±ΠΈΠ·Π½Π΅ΡΠ΅ ΠΈ Π½Π° ΡΡΠΈΠ»Π°Π½ΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠ²ΠΎΠΈΡ
Π·Π½Π°Π½ΠΈΠΉ Π΄ΠΎΡ
ΠΎΠ΄ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΡ $ Π² ΠΌΠ΅ΡΡΡ.
ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΡ ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΠΉ Π·Π½Π°Π½ΠΈΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: ‡οΈ
https://t.me/+yEOgj-E-dYw0NWYy
https://t.me/+yEOgj-E-dYw0NWYy
4 939
π©βπ» Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ AtomicInteger Π² Java ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
AtomicInteger β ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° java.util.concurrent.atomic, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ synchronized.
ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (incrementAndGet, decrementAndGet, compareAndSet) Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (CAS β Compare-And-Swap).β’ ΠΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΡΡΡΡΡΠΈΠΊ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β’ ΠΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ
synchronized
β’ ΠΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ
β‘οΈ ΠΡΠΈΠΌΠ΅Ρ:
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
private static final AtomicInteger counter = new AtomicInteger(0);
public static void main(String[] args) {
Runnable task = () -> {
for (int i = 0; i < 1000; i++) {
counter.incrementAndGet();
}
};
Thread t1 = new Thread(task);
Thread t2 = new Thread(task);
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException ignored) {}
System.out.println("Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: " + counter.get());
}
}
π AtomicInteger ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΠΏΠΎΠ΄ΡΡΡΡΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ID ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π±Π΅Π· ΡΡΠΆΡΠ»ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.β‘οΈ Easy Java | #Π’Π΅ΠΎΡΠΈΡ
4 939
β ΠΠΎΠΏΡΠΎΡ Ρ ΡΠΎΠ±Π΅ΡΠ°
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ try-with-resources Π² Java ΠΈ ΡΠ΅ΠΌ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ try?
ΠΡΠΈΠΌΠ΅Ρπ½
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
System.out.println(reader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
ΠΡΠ²Π΅Ρπ½
try-with-resources Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΡΡΡΡ (ΡΠ°ΠΉΠ»Ρ, ΠΏΠΎΡΠΎΠΊΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ) ΠΏΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· Π±Π»ΠΎΠΊΠ° try. ΠΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π½ΡΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ AutoCloseable. π Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ try, Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΡΠ½ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ close() Π² finally. ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ .β‘οΈ Easy Java | #Π‘ΠΎΠ±Π΅Ρ
4 939
ΠΠΈΠ»Π»ΠΈΠΎΠ½Π΅Ρ-Π°ΠΉΡΠΈΡΠ½ΠΈΠΊ Π² 24 Π³ΠΎΠ΄Π°?
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ β ΡΡΠΎ ΠΠ»Π°Π΄, Π΅ΠΌΡ 24, ΠΈ ΠΎΠ½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π±Π΅Π· Π²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ..
IT ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ Π½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΡΠ΅Ρ ΠΈ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ ΠΏΠΎΡΠΎΠ»ΠΊΠ° !
~ ΠΡΠΌΠ°Π΅ΡΡ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ?
Π― ΠΈ ΡΠ΅Π±Ρ Π½Π°ΡΡΡ Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² IT ΠΈ ΡΠ°ΡΡΠΈΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ Π²ΡΡΠΎΠΊΠΎΠΊΠ»Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ° ΠΌΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ!
ΠΠ΅ Π²Π΅ΡΠΈΡΡ? ΠΠ°Π±ΠΈΡΠ°ΠΉ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠ°Π½Π°Π»Π΅ π
https://t.me/+0-MtMJkZF2BlOWM6
