Если объект не будет владеть объектным монитором, когда это назовет Object.wait (), это не будет в состоянии получить доступ к объекту установить уведомлять слушателя до, монитор выпущен. Вместо этого это будут рассматривать как поток, пытающийся получить доступ к методу на синхронизируемом объекте.
Или, другими словами, нет никакого различия между:
public void doStuffOnThisObject()
и следующий метод:
public void wait()
Оба метода будут заблокированы, пока объектный монитор не будет выпущен. Это - функция в Java для препятствования состоянию объекта быть обновленным больше чем одним потоком. Это просто имеет непреднамеренные последствия на ожидании () метод.
, По-видимому, ожидание () метод не синхронизируется, потому что это могло создать ситуации, где Поток имеет, несколько соединяют объект. (См. Спецификации/Блокировка Языка Java для большего количества информации об этом.) Несколько блокировок являются проблемой, потому что ожидание () метод только отменит одну блокировку. Если бы метод синхронизировался, он гарантировал бы, что только блокировка метода будет отменена, все еще оставляя потенциальную внешнюю блокировку отмененной. Это создало бы условие мертвой блокировки в коде.
Для ответа на вопрос на Thread.sleep () Thread.sleep () не гарантирует, что безотносительно условия, на котором Вы ожидаете, был встречен. Используя Object.wait () и Object.notify () позволяет программисту вручную реализовывать блокирование. Потоки разблокируют, как только уведомление отправляется это, условие соблюдали. например, чтение от диска закончилось, и данные могут быть обработаны потоком. Thread.sleep () потребовал бы, чтобы программист опросил, если условие соблюдали, то отступает ко сну, если это не имеет.
Это было мое решение:
RewriteRule ^ (. *) $ Index.php? Url = $ 1 [L, QSA]
Попробуйте следующее:
RewriteEngine On
RewriteRule ^(.*)$ /index.php?url=$1 [L]
Пользователь на вашем сайте увидит это и перейдет к нему:
http://example.com/contact
Но реальная страница будет примерно такой:
http://example.com/index.php?url=contact
Этот бит, [L]
, сообщает серверу что это последняя строка правила перезаписи и остановка.
RewriteCond %{QUERY_STRING} url=(.*)
RewriteRule index.html %1
(или что угодно, если это не index.html, index.php, что угодно)
Вам нужно захватить строку запроса, которая обычно не просматривается RewriteRule, и использовать% 1 обратная ссылка, а не 1 доллар, как при захвате в RewriteRule