output: #fixed code
                                  public void testSimpleHttpHeads() throws Exception {
          int connNo = 3;
          int reqNo = 20;
          Job[] jobs = new Job[connNo * reqNo];
          for (int i = 0; i < jobs.length; i++) {
              jobs[i] = new Job();
          }
          Queue<Job> queue = new ConcurrentLinkedQueue<Job>();
          for (int i = 0; i < jobs.length; i++) {
              queue.add(jobs[i]);
          }
  
          HttpRequestExecutionHandler requestExecutionHandler = new RequestExecutionHandler() {
  
              @Override
              protected HttpRequest generateRequest(Job testjob) {
                  String s = testjob.getPattern() + "x" + testjob.getCount();
                  return new BasicHttpRequest("HEAD", s);
              }
  
          };
  
          HttpProcessor serverHttpProc = new ImmutableHttpProcessor(new HttpResponseInterceptor[] {
                  new ResponseDate(),
                  new ResponseServer(),
                  new ResponseContent(),
                  new ResponseConnControl()
          });
  
          ThrottlingHttpServiceHandler serviceHandler = new ThrottlingHttpServiceHandler(
                  serverHttpProc,
                  new DefaultHttpResponseFactory(),
                  new DefaultConnectionReuseStrategy(),
                  this.execService,
                  this.server.getParams());
  
          serviceHandler.setHandlerResolver(
                  new SimpleHttpRequestHandlerResolver(new RequestHandler()));
          serviceHandler.setEventListener(
                  new SimpleEventListener());
  
          HttpProcessor clientHttpProc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] {
                  new RequestContent(),
                  new RequestTargetHost(),
                  new RequestConnControl(),
                  new RequestUserAgent(),
                  new RequestExpectContinue()});
  
          ThrottlingHttpClientHandler clientHandler = new ThrottlingHttpClientHandler(
                  clientHttpProc,
                  requestExecutionHandler,
                  new DefaultConnectionReuseStrategy(),
                  this.execService,
                  this.client.getParams());
  
          clientHandler.setEventListener(new SimpleEventListener());
  
          this.server.start(serviceHandler);
          this.client.start(clientHandler);
  
          ListenerEndpoint endpoint = this.server.getListenerEndpoint();
          endpoint.waitFor();
          InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
  
          assertEquals("Test server status", IOReactorStatus.ACTIVE, this.server.getStatus());
  
          Queue<SessionRequest> connRequests = new LinkedList<SessionRequest>();
          for (int i = 0; i < connNo; i++) {
              SessionRequest sessionRequest = this.client.openConnection(
                      new InetSocketAddress("localhost", serverAddress.getPort()),
                      queue);
              connRequests.add(sessionRequest);
          }
  
          while (!connRequests.isEmpty()) {
              SessionRequest sessionRequest = connRequests.remove();
              sessionRequest.waitFor();
              if (sessionRequest.getException() != null) {
                  throw sessionRequest.getException();
              }
              assertNotNull(sessionRequest.getSession());
          }
  
          assertEquals("Test client status", IOReactorStatus.ACTIVE, this.client.getStatus());
  
          for (int i = 0; i < jobs.length; i++) {
              Job testjob = jobs[i];
              testjob.waitFor();
              if (testjob.getFailureMessage() != null) {
                  fail(testjob.getFailureMessage());
              }
              assertEquals(HttpStatus.SC_OK, testjob.getStatusCode());
              assertNull(testjob.getResult());
          }
      }
input: #vulnerable code 
                                  public void testSimpleHttpHeads() throws Exception {
          int connNo = 3;
          int reqNo = 20;
          TestJob[] jobs = new TestJob[connNo * reqNo];
          for (int i = 0; i < jobs.length; i++) {
              jobs[i] = new TestJob();
          }
          Queue<TestJob> queue = new ConcurrentLinkedQueue<TestJob>();
          for (int i = 0; i < jobs.length; i++) {
              queue.add(jobs[i]);
          }
  
          HttpRequestExecutionHandler requestExecutionHandler = new TestRequestExecutionHandler() {
  
              @Override
              protected HttpRequest generateRequest(TestJob testjob) {
                  String s = testjob.getPattern() + "x" + testjob.getCount();
                  return new BasicHttpRequest("HEAD", s);
              }
  
          };
  
          HttpProcessor serverHttpProc = new ImmutableHttpProcessor(new HttpResponseInterceptor[] {
                  new ResponseDate(),
                  new ResponseServer(),
                  new ResponseContent(),
                  new ResponseConnControl()
          });
  
          ThrottlingHttpServiceHandler serviceHandler = new ThrottlingHttpServiceHandler(
                  serverHttpProc,
                  new DefaultHttpResponseFactory(),
                  new DefaultConnectionReuseStrategy(),
                  this.execService,
                  this.server.getParams());
  
          serviceHandler.setHandlerResolver(
                  new SimpleHttpRequestHandlerResolver(new TestRequestHandler()));
          serviceHandler.setEventListener(
                  new SimpleEventListener());
  
          HttpProcessor clientHttpProc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] {
                  new RequestContent(),
                  new RequestTargetHost(),
                  new RequestConnControl(),
                  new RequestUserAgent(),
                  new RequestExpectContinue()});
  
          ThrottlingHttpClientHandler clientHandler = new ThrottlingHttpClientHandler(
                  clientHttpProc,
                  requestExecutionHandler,
                  new DefaultConnectionReuseStrategy(),
                  this.execService,
                  this.client.getParams());
  
          clientHandler.setEventListener(new SimpleEventListener());
  
          this.server.start(serviceHandler);
          this.client.start(clientHandler);
  
          ListenerEndpoint endpoint = this.server.getListenerEndpoint();
          endpoint.waitFor();
          InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
  
          assertEquals("Test server status", IOReactorStatus.ACTIVE, this.server.getStatus());
  
          Queue<SessionRequest> connRequests = new LinkedList<SessionRequest>();
          for (int i = 0; i < connNo; i++) {
              SessionRequest sessionRequest = this.client.openConnection(
                      new InetSocketAddress("localhost", serverAddress.getPort()),
                      queue);
              connRequests.add(sessionRequest);
          }
  
          while (!connRequests.isEmpty()) {
              SessionRequest sessionRequest = connRequests.remove();
              sessionRequest.waitFor();
              if (sessionRequest.getException() != null) {
                  throw sessionRequest.getException();
              }
              assertNotNull(sessionRequest.getSession());
          }
  
          assertEquals("Test client status", IOReactorStatus.ACTIVE, this.client.getStatus());
  
          for (int i = 0; i < jobs.length; i++) {
              TestJob testjob = jobs[i];
              testjob.waitFor();
              if (testjob.getFailureMessage() != null) {
                  fail(testjob.getFailureMessage());
              }
              assertEquals(HttpStatus.SC_OK, testjob.getStatusCode());
              assertNull(testjob.getResult());
          }
      } 
                              #location 61 
                              #vulnerability type THREAD_SAFETY_VIOLATION