MultipartUtility class 的本地实例在 java 中是线程安全的吗?

Local instance of the MultipartUtility class is thread safe in java?

MultipartUtility“uploadFile”方法中的对象实例“multipartUtil”是否线程安全?我相信实例地址将存储在堆栈中,对象将存储在堆中。此 MultipartUtility class 具有 class 级变量。如果对象实例只能由该特定线程访问,那么 class 上的所有变量期望静态变量是否被认为是线程安全的?

public class MyController {
    public ResponseEntity<String> uploadFile(String stringUrl, MultipartFile multiPartFile) {       
        String charset = "UTF-8";
        String contentType = "multipart/form-data";
        String agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2";
        
            MultipartUtility multipartUtil = new MultipartUtility(stringUrl, charset); 
            multipartUtil.addHeaderField("User-Agent", agent);
            multipartUtil.addHeaderField("Content-Type", contentType);
            File fileObj = new File(multiPartFile.getOriginalFilename()); 
            multipartUtil.addFilePart("fileUpload", fileObj);
            List<String> response = multipartUtil.finish(); 
            StringBuilder responseStr = new StringBuilder();
            for (String line : response) {
                responseStr.append(line);
            }           
            return new ResponseEntity<String>(responseStr.toString(), HttpStatus.OK);       
    }
}

对象本身似乎是线程安全的,因为字段都是不可变的。

但是,writer 和 connection 等对象不能同时使用:

 public void addFormField(String name, String value) {
        writer.append("--" + boundary).append(LINE_FEED);
        writer.append("Content-Disposition: form-data; name=\"" + name + "\"")
                .append(LINE_FEED);
        writer.append("Content-Type: text/plain; charset=" + charset).append(
                LINE_FEED);
        writer.append(LINE_FEED);
        writer.append(value).append(LINE_FEED);
        writer.flush();
    }

如果这将被并发调用,那么作者可能会交错 2 个请求。

根据上面的示例代码,似乎没有并发问题(正如 Unmitigated 已经指出的那样),因为实例不在线程之间共享。