ММА/ИДО/Экономическая теория (РЕЗУЛЬТАТ 100 %)в странах ЕС для помощи предприятиям с целью их адаптации к условиям общего рынка? 1.LEADER 2.HELPER 3.PRISME 11. Кто ввел понятие «экономическое пространство» и представление о географическом положении
Test «MANAGEMENT»11. The general manager is a … among the various functional areas of the business. a. partner b. helper c. liaison d. choice 12. The general manager must find and train competent … . a. colleagues b. subordinates
ММА ИДО Экономическая география и регионалистикапомощи предприятиям с целью их адаптации к условиям общего рынка? Выберите один ответ: 1.LEADER 2.HELPER 3.PRISME Вопрос 11 Кто ввел понятие «экономическое пространство» и представление о географическом
Здравствуйте, мистер Helper. Решите, пожалуйста, такую задачу: найти все значения параметра a, при которых…Здравствуйте, мистер Helper. Решите, пожалуйста, такую задачу: найти все значения параметра a, при которых неравенство (a^2-4)*x^2 + 2*(a+2)*x - 1 < 0 выполнено при любом значении x.
Ответ на вопрос
Для того чтобы найти все значения параметра a, при которых неравенство выполнено при любом значении x, нужно чтобы дискриминант квадратного уравнения был меньше нуля.Дискриминант квадратного уравнения (a^2-4)x^2 + 2(a+2)x - 1 равен D = 4(a^2 + 4a + 1).Чтобы неравенство было выполнено при любом значении х, необходимо, чтобы дискриминант был меньше нуля, то есть:4*(a^2 + 4a + 1) < 0a^2 + 4a + 1 < 0Теперь решим это квадратное неравенство. Для этого найдем корни уравнения a^2 + 4a + 1 = 0 и посмотрим, в каких интервалах выполняется неравенство.a1 = (-4 + sqrt(4-411)) / 2 = (-4 + sqrt(12))/2 = (-4 + 2sqrt(3))/2 = -2 + sqrt(3)
a2 = (-4 - sqrt(4-411)) / 2 = (-4 - sqrt(12))/2 = (-4 - 2sqrt(3))/2 = -2 - sqrt(3)Таким образом, корни уравнения a^2 + 4a + 1 = 0 равны -2 + sqrt(3) и -2 - sqrt(3).Теперь найдем интервалы, в которых неравенство выполняется. Поскольку у неравенства стоит знак "меньше", то нам нужны значения a между корнями уравнения.Итак, все значения параметра a, при которых неравенство (a^2-4)x^2 + 2(a+2)*x - 1 < 0 выполнено при любом значении x, это -2-sqrt(3) < a < -2+sqrt(3).
Еще Ответ на вопрос
Решение неверно. Приведу контрпример. Возьмем a = -3. Это значение удовлетворяет тому ответу, который Вы привели, так как -2-sqrt(3) < -3 < -2+sqrt(3). Для этого значения неравенство принимает вид 5*x^2 - 2*x - 1 <0. Это неравенство не выполняется для всех x, так как при подстановке x=1 получаем 2<0, что неверно.
Еще Дан фрагмент на Java: "class A { void m() { synchronized(this) { helper(); } } void helper() { synchronized(this)…Дан фрагмент на Java: "class A { void m() { synchronized(this) { helper(); } } void helper() { synchronized(this) { /* ... */ } } }": возможно ли взаимоблокирование (deadlock) здесь, объясните поведение
Ответ на вопрос
Коротко: взаимоблокировки (deadlock) в приведённом фрагменте между этими двумя synchronized-блоками на одном и том же объекте не произойдёт — Java-мониторы reentrant. То есть тот же поток, уже держащий монитор объекта, может снова войти в synchronized(this) (счётчик захватов увеличивается) и освобождает монитор только когда все уровни выхода завершены.
Пояснения:
- При входе в m() поток захватывает монитор this. При вызове helper() тот же поток снова входит в synchronized(this) — блокировка проходит, счётчик захвата увеличивается. Никакого взаимоблокирования между этими двумя входами не будет.
- Deadlock возможен в других сценариях: если другой поток держит другой ресурс, и helper() (или другие методы) синхронизируются на другом порядке блокировок, или если вы вызываете внешние/переопределяемые методы, держащие другие мониторы — тогда классический цикл блокировок возможен.
- Ещё риск: синхронизация на this делает монитор видимым извне (клиенты могут тоже синхронизироваться на том же объекте), что увеличивает шанс неожиданных блокировок.
Рекомендации по дизайну (чтобы снизить риск блокировок):
1) Не синхронизируйтесь на this; используйте приватный lock-объект:
private final Object lock = new Object();
void m() {
synchronized(lock) { helper(); }
}
private void helper() { /* либо synchronized(lock) { ... } либо без синхронизации, если вызывается только из защищённого блока */ }
2) Избегайте вызова переопределяемых (non-final, non-private) методов под блокировкой — сделайте helper() private/final или снимайте блокировку перед вызовом внешнего кода.
3) Если нужна большая гибкость/таймауты/диагностика, используйте java.util.concurrent.locks.ReentrantLock с tryLock/таймаутом:
private final ReentrantLock lock = new ReentrantLock();
void m() {
lock.lock();
try { helper(); } finally { lock.unlock(); }
}
private void helper() { /* либо предполагает, что lock уже удерживается, либо сам использует lock */ }
4) Минимизируйте область синхронизации — держите блоки как можно короче и синхронизируйте только критические данные.
Итог: сам по себе код не вызывает deadlock из-за реентрантности, но лучше использовать приватный lock, избегать вызовов переопределяемых методов под монитором и свести вложенную синхронизацию к минимуму.
Еще