def METHOD_NAME(self):
    def wait_until_interrupted(cv):
        name = threading.currentThread().getName()
        with cv:
            while not JThread.currentThread().isInterrupted():
                try:
                    cv.wait()
                except InterruptedException, e:
                    break
    num_threads = 5
    unfair_condition = Condition()
    threads = [
        Thread(
            name="thread #%d" % i,
            target=wait_until_interrupted,
            args=(unfair_condition,)) 
        for i in xrange(num_threads)]
    for thread in threads:
        thread.start()
    time.sleep(0.1)
    for thread in threads:
        JThread.interrupt(thread)
    joined_threads = 0
    for thread in threads:
        thread.join(1.) # timeout just in case so we don't stall regrtest
        joined_threads += 1
    self.assertEqual(joined_threads, num_threads)