- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
package com.govnoistochnik.servleti;
...
import javax.servlet.GenericServlet;
...
public class GenericReportingServlet extends GenericServlet {
PrintWriter oos; // Говно источник
...
public synchronized void createReport(...)
{
oos = new PrintWriter();
...
// pessot strok govnokoda vida
oos.println("report");
...
saveToDB(oos.toString());
oos.close;
}
public synchronized void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// Kucha govnokoda
createReport(...);
// Prodoljeniye kuchi
}
...
}
SmackMyBitchUp 27.01.2012 15:29 # 0
палец с жопой перепутали, печально
Хотя, кажется, я неправильно понял слово "источник"
дальше не смотрел
Lure Of Chaos 27.01.2012 17:17 # −1
угу
kirpi 27.01.2012 17:36 # 0
Сервер по определению должен быть многопоточен.
Так что выкидываем Synchronize.
Остаётся Глобальная переменная ради чего и был синхронайз.
И тут начинается веселуха.
Один поток обект создаёт
Другой в него пишет
Третий его закрывает
Первый пытается писать и ловит ошибку "стрим закрыт"
А я вам скажу изначально в этом коде никокого синхронизе небыло!
Это когда говны начали сыпаться с одновремнным использованием глобальной переменной.
Вместо того чтобы перенести глобальную куданить в более пристойное место
"Говноумельцы" добавили синхронайз так и получился такой вот говнокод.