Easy Java
Kanalga Telegramβda oβtish
ΠΡΡΡΠΈΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π‘ΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ: @heywan_n1 Π¦Π΅Π½Ρ: @heywan_media Π Π΅ΠΊΠ»Π°ΠΌΠ° Π½Π° Π±ΠΈΡΠΆΠ΅: https://telega.in/c/+r8kkGSypBY84MmIy
Ko'proq ko'rsatish5 037
Obunachilar
-224 soatlar
-187 kunlar
-7430 kunlar
Postlar arxiv
5 036
π©βπ» Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ 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 | #Π’Π΅ΠΎΡΠΈΡ
5 036
β ΠΠΎΠΏΡΠΎΡ Ρ ΡΠΎΠ±Π΅ΡΠ°
Π§Π΅ΠΌ 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 | #Π‘ΠΎΠ±Π΅Ρ
5 036
π¨π¨π¨π¨π¨π¨π¨π¨π¨π¨
ΠΠ°Π½Π°Π»Ρ Ρ 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. ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π½Π° Π₯Π₯.Π Π£
5 036
ΠΠΉΡΠΈΡΠ½ΠΈΠΊΠΈ Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΠΠ₯#Π― π΅π΅
ΠΠ΅ Π²ΡΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΠ΅ Ρ
Π²Π°ΡΠΊΠΈΠ΅.
ΠΡΠΎ Ρ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ ΠΈ ΡΡΡΠΊΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Π²Π½ΡΡΡΠΈ.
πΌ Π ΡΠ½ΠΎΠΊ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠΊΡΠΏΠ°Π΅Ρ ΠΠ Π·Π½Π°Π½ΠΈΡ.
ΠΠ½ ΠΏΠΎΠΊΡΠΏΠ°Π΅Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΡΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈΡ
Π² ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ
ΠΠΈΠ·Π½Π΅Ρ-Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΎΡ β ΠΊΠ°Π½Π°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ Π² IT, Π±ΠΈΠ·Π½Π΅ΡΠ΅ ΠΈ Π½Π° ΡΡΠΈΠ»Π°Π½ΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠ²ΠΎΠΈΡ
Π·Π½Π°Π½ΠΈΠΉ Π΄ΠΎΡ
ΠΎΠ΄ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΡ $ Π² ΠΌΠ΅ΡΡΡ.
ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΡ ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΠΉ Π·Π½Π°Π½ΠΈΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: ‡οΈ
https://t.me/+yEOgj-E-dYw0NWYy
https://t.me/+yEOgj-E-dYw0NWYy
5 036
π©βπ» Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ 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 | #Π’Π΅ΠΎΡΠΈΡ
5 036
β ΠΠΎΠΏΡΠΎΡ Ρ ΡΠΎΠ±Π΅ΡΠ°
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ 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 | #Π‘ΠΎΠ±Π΅Ρ
5 036
ΠΠΈΠ»Π»ΠΈΠΎΠ½Π΅Ρ-Π°ΠΉΡΠΈΡΠ½ΠΈΠΊ Π² 24 Π³ΠΎΠ΄Π°?
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ β ΡΡΠΎ ΠΠ»Π°Π΄, Π΅ΠΌΡ 24, ΠΈ ΠΎΠ½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π±Π΅Π· Π²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ..
IT ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ Π½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΡΠ΅Ρ ΠΈ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ ΠΏΠΎΡΠΎΠ»ΠΊΠ° !
~ ΠΡΠΌΠ°Π΅ΡΡ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ?
Π― ΠΈ ΡΠ΅Π±Ρ Π½Π°ΡΡΡ Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² IT ΠΈ ΡΠ°ΡΡΠΈΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ Π²ΡΡΠΎΠΊΠΎΠΊΠ»Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ° ΠΌΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ!
ΠΠ΅ Π²Π΅ΡΠΈΡΡ? ΠΠ°Π±ΠΈΡΠ°ΠΉ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠ°Π½Π°Π»Π΅ π
https://t.me/+0-MtMJkZF2BlOWM6
5 036
π©βπ» Π ΡΠ΅ΡΡ Π²ΡΠ²Π°Π»ΠΈΠ»Π°ΡΡ Π³ΠΈΠ³Π°Π½ΡΡΠΊΠ°Ρ ΠΊΡΡΠ° ΠΊΡΡΡΠΎΠ² ΠΈ ΠΊΠ½ΠΈΠ³ ΠΎΡ ΡΠΎΠΏΠΎΠ²ΡΡ
ITβΡΠΊΠΎΠ»
ΠΠ΅ΡΠΆΠΈ ΡΠΎΡΠ½ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ ΡΠ²Π΅ΠΆΠΈΡ
ΡΡΠΎΠΊΠΎΠ², ΠΈ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΌΡ ΠΏΠΎΠ΄ΠΊΠΈΠ΄ΡΠ²Π°Π΅ΠΌ Π΅ΡΡ!
1402 ΠΠ β Python
1815 ΠΠ β Frontend
1515 ΠΠ β Backend
1300 ΠΠ β C / C++
694 ΠΠ β Java
546 ΠΠ β SQL & ΠΠ
411 ΠΠ β DevOps
898 ΠΠ β ΠΠ & Π₯Π°ΠΊΠΈΠ½Π³
212 ΠΠ β JavaScript
996 ΠΠ β Kotlin / Swift
173 ΠΠ β PHP
215 ΠΠ β GoLang
185 ΠΠ β Rust
517 ΠΠ β Linux
115 ΠΠ β QA / Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
419 ΠΠ β GameDev
319 ΠΠ β 1C + ΠΠΈΡΠ΅Π½Π·ΠΈΠΈ
617 ΠΠ β ΠΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅
687 ΠΠ β ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ° ΠΠ°Π½Π½ΡΡ
998 ΠΠ β ΠΠΈΠ·Π°ΠΉΠ½
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΡ ΠΈ Π½Π΅ ΠΏΠ»Π°ΡΠΈ Π·Π° ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ
5 036
π©βπ» Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ volatile Π² Java ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
volatile β ΡΡΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ JVM: Π½Π΅ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π²ΡΠ΅Π³Π΄Π° ΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ synchronized.
ΠΠ½ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌΠΈ, Π½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΠ²ΠΈΠ΄ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ».β’ Π£ΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ β’ ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β’ ΠΠ΄Π΅Π°Π»Π΅Π½ Π΄Π»Ρ ΡΠ»Π°Π³ΠΎΠ² ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ β‘οΈ ΠΡΠΈΠΌΠ΅Ρ:
public class Main {
private static volatile boolean running = true;
public static void main(String[] args) throws InterruptedException {
Thread worker = new Thread(() -> {
while (running) {
// Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ
}
System.out.println("ΠΠΎΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΡΠ½");
});
worker.start();
Thread.sleep(1000);
running = false; // ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΅Ρ Π²ΠΈΠ΄Π½ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅
}
}
π volatile ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠ»Π°Π³ΠΎΠ² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΡΡΡ ΡΡΠ°ΡΡΡΠΎΠ² ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π³Π΄Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ, Π½ΠΎ Π½Π΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ Π·Π°ΡΠΈΡΠ° ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΊΡΠΈΠΉ.β‘οΈ Easy Java | #Π’Π΅ΠΎΡΠΈΡ
