Я новичок в многопоточности, и я запутался, если этот метод является потокобезопасным или нет, поскольку я не делаю нового в HttpURLConnection conn ............ ..........................Явная локальная переменная Java Thread Безопасность
protected byte[] someMethod(Authenticator authenticator, String url, boolean doPost) throws Exception {
try {
URL aUrl = new URL(url);
strBldr = new StringBuilder();
AuthenticatedURL.Token token = new AuthenticatedURL.Token();
TestConnectionConfigurator connConf = new TestConnectionConfigurator();
AuthenticatedURL authUrl = new AuthenticatedURL(authenticator, connConf);
HttpURLConnection conn = authUrl.openConnection(aUrl, token);
if (!connConf.invoked)
throw new IOException("failed to invoked");
String tokenStr = token.toString();
if (doPost) {
conn.setRequestMethod("POST");
conn.setDoOutput(true);
}
conn.setRequestProperty("Accept", "application/octet-stream");
conn.setDoOutput(true);
conn.connect();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedInputStream in = new BufferedInputStream(
conn.getInputStream());
ByteArrayOutputStream byteArraySt = new ByteArrayOutputStream();
int counter;
while ((counter = in.read()) != -1) {
byteArraySt.write(counter);
}
byte [] bArray = new byte[byteArraySt.toByteArray().length];
bArray = byteArraySt.toByteArray();
in.close();
return bArray;
}
Подробнее о безопасности потоков: http://www.javaworld.com/article/2076747/core-java/design-for-thread-safety.html –
Если все переменные являются локальными и остаются такими, вопрос о безопасность потоков не может возникнуть. Почему вы устанавливаете 'doOutput' в true, а затем ничего не выводите? – EJP