    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String action = req.getParameter("action");
        String sequence = req.getParameter("sequence");
        String poison = req.getParameter("poison");
        if ("getAndSet".equals(action)) {
            // the value should always be foo
            String value = bean.getAndSet("bar" + sequence);
            resp.getWriter().println(value);
            if (poison != null) {
                // this is a poisoning request
                // normal applications should never do something like this
                // we just do this to cause an exception to be thrown out of ConversationContext.deactivate
                req.removeAttribute(ConversationNamingScheme.PARAMETER_NAME);
            }
        } else {
            throw new IllegalArgumentException(action);
        }
    }
The program contains a code sequence that can run concurrently with other code, and the code sequence requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence that is operating concurrently.