Deadlock является ошибкой на уровне операционной системы и является аббревиатурой тупика процесса. Впервые он был предложен Dijkstra при изучении алгоритмов банкиров в 1965 году. Это одна из самых сложных проблем в компьютерных операционных системах и даже во всей области параллельного программирования.
На самом деле, в компьютерном мире есть много вещей, которые необходимо решить с помощью нескольких потоков, потому что таким образом ресурсы могут использоваться для максимизации эффективности вычислений. Однако, на самом деле, в компьютерных системах существует много ситуаций, где ресурсы могут использоваться только одним процессом за раз, например, принтеры, и только один процесс может контролировать его одновременно. В многоканальной среде программирования несколько процессов часто делятся такими ресурсами, и процесс может потребовать более одного ресурса. Следовательно, несколько процессов будут бороться за ограниченные ресурсы, и порядок продвижения будет неправильно, что формирует ситуацию с неопределенным ожиданием цикла. Мы называем этот тупик штата. Проще говоря, Deadlock относится к ситуации, когда несколько процессов проходят через ресурсы, которые они занимают, и остаются в непосредственной ситуации на неопределенный срок. Очевидно, что если нет внешней силы, то все процессы, связанные с тупиком, всегда будут заблокированы.
Имя файла: Deadthreadbyextend.java
Примечание:
1. При запуске потока можно использовать метод запуска. Метод запуска также может быть вызван, но он эквивалентен обычным вызовам и выполняется в текущем потоке.
2. Синхронизированный не может напрямую изменять переменные.
3. Синхронизированный блок не заставляет доступ к однополосным переменным в блоке. Это просто означает, что параметр синхронизированного (ARGS) заблокирован при выполнении операторов в блоке и не выпускается до завершения выполнения.
Пакет com.ycf.study.thread; класс источники {int a; public void seta (int x) {synchronized (this) {this.a = x; try {thread.sleep (2000);} catch (urruptedExcept S1 = новые источники (); источники S2 = новые источники (); класс mythread1 Extens Java.lang.Thread {@Override public void run () {System.out.println («Тема 1 запуска»); Synchronized (S1) {System.out.println («Тема 1 применяет к модификации s1»); s1.set. 1 выходит и выпускает Lock ++++++++++++++++++ ");}} класс Mythread2 Extends java.lang.thread {@override public void run () {System.out.println (" Поток 2 запускается "); Synchronized (S2) {System.out.println (" Треда 2 применяет к модификации к модифицированию к модификации к модифицированию к модификации. S2 "); s2.seta (20); System.out.println (" Тейд 2 изменяется s2 overse "); system.out.println (« Поток 2 применяется к изменению S1 »); S1.seta (10); System.out.println (« Поток 2 изменяется S1 Lock ++++++++++++++++ ");}} mythread1 mt1 = new mythread1 (); mythread2 mt2 = new mythread2 (); mt1.start (); mt2.start ();}}Суммировать
Выше приведено примером кода тупика Java. В этой статье я надеюсь, что это будет полезно для всех. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте.