Одиночный поток безопасен, потому что есть только один поток, и нет нескольких потоков, которые получают один и тот же ресурс.
Пример кода:
public class SingleThread {int num=10;public void add(){while(num<13){num++;try{Thread.sleep(1000);}catch(Exception e){System.out.println("interrupt");}System.out.println(num);}}public static void main(String[] args){Thread thread = Thread.currentThread(); // Получить в данный момент в данный момент запущенные потоки потока. STECTNAME («Одиночный поток»); // Thread rename System.out.println (thread.getName ()+"running"); singleThread St = new SingleThread (); St.Ddd ();}}Многопользовательская безопасность, синхронизированные синхронизированные кодовые блоки
синхронизированный (объект) {}; // Синхронизированный кодовый блок
Синхронизированное возвращаемое значение method name () {}; // Синхронизированный метод
класс первый {int num = 10; public void add () {synchronized (this) {// sync -кодовые блоки, метод синхронизации также может достичь синхронизированного эффекта void add () {}; num ++; try {thread.sleep (1000); } catch (прерывание Exception e) {System.out.println ("прерван"); } System.out.println (num); }}} класс два реализует runnable {One One = new One (); @Override public void run () {one.add (); // вызов метода добавления}} public class synch {public static void main (string [] args) {Two two = new Two (); Потока T1 = новый поток (два); // Создать три потока дочерних потоков T2 = новый поток (два); Поток T3 = новый поток (два); t1.start (); t2.start (); t3.start (); }}Примечание. Соблюдайте разницу в запуске результатов удаления синхронизированных ключевых слов!
Нормальные результаты работы:
11
12
13