# Многопоточность - Одновременное выполнение нескольких действий - Ускорение вычислений ### Закон Амдала $$ S(N) = 1/((1-P)+ \frac{P}{N}) $$ - $S$ - Ускорение (speedup) - $P$ - доля вычислений, которые можно распараллелить - $N$ - Количество вычислительных ядер ### Доступ к разделяемому ресурсу - Блокировка (mutual exclusion) - Неблокирующий доступ - Lock-free - гарантированный прогресс приложения - Wait-free - гарантированный прогресс каждого потока (каждый поток завершает выполнение любой операции за конечное число шагов) ### Класс Thread Потоки представлены экземплярами класса `java.lang.Thread` ```java class Thread { String getName() Long getId() boolean isDaemon() StackTraceElement[] getStackTrace() ThreadGroup getThreadGroup() } ``` ```java Thread thread = new Thread() { @Override public void run() {/* ... */} } ``` ### Синхронизированный метод и блок ```java public synchronized void doSomething() {} public void doSomething() { synchronized (obj) {} } ```