ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/FairSemaphore.java
(Generate patch)

Comparing jsr166/src/main/java/util/concurrent/FairSemaphore.java (file contents):
Revision 1.6 by dl, Fri Jul 11 13:12:06 2003 UTC vs.
Revision 1.7 by tim, Fri Aug 8 20:05:07 2003 UTC

# Line 273 | Line 273 | public class FairSemaphore extends Semap
273              }
274              count = 0;
275              node = enq(-remaining);
276 <        }
277 <        finally {
276 >        } finally {
277              lock.unlock();
278          }
279  
# Line 282 | Line 281 | public class FairSemaphore extends Semap
281          try {
282              while (node.permitsNeeded > 0)
283                  node.done.await();
284 <        }
286 <        catch(InterruptedException ie) {
284 >        } catch(InterruptedException ie) {
285              if (node.permitsNeeded > 0) {
286                  node.cancelled = true;
287                  release(permits - node.permitsNeeded);
288                  throw ie;
289 <            }
292 <            else { // ignore interrupt
289 >            } else { // ignore interrupt
290                  Thread.currentThread().interrupt();
291              }
292 <        }
296 <        finally {
292 >        } finally {
293              node.unlock();
294          }
295      }
# Line 334 | Line 330 | public class FairSemaphore extends Semap
330              }
331              count = 0;
332              node = enq(-remaining);
333 <        }
338 <        finally {
333 >        } finally {
334              lock.unlock();
335          }
336  
# Line 343 | Line 338 | public class FairSemaphore extends Semap
338          try {
339              while (node.permitsNeeded > 0)
340                  node.done.awaitUninterruptibly();
341 <        }
347 <        finally {
341 >        } finally {
342              node.unlock();
343          }
344      }
# Line 376 | Line 370 | public class FairSemaphore extends Semap
370                  return true;
371              }
372              return false;
373 <        }
380 <        finally {
373 >        } finally {
374              lock.unlock();
375          }
376      }
# Line 447 | Line 440 | public class FairSemaphore extends Semap
440                  return false;
441              count = 0;
442              node = enq(-remaining);
443 <        }
451 <        finally {
443 >        } finally {
444              lock.unlock();
445          }
446          
# Line 462 | Line 454 | public class FairSemaphore extends Semap
454                  }
455              }
456              return true;
457 <        }
466 <        catch(InterruptedException ie) {
457 >        } catch(InterruptedException ie) {
458              if (node.permitsNeeded > 0) {
459                  node.cancelled = true;
460                  release(permits - node.permitsNeeded);
461                  throw ie;
462 <            }
472 <            else { // ignore interrupt
462 >            } else { // ignore interrupt
463                  Thread.currentThread().interrupt();
464                  return true;
465              }
466 <        }
477 <        finally {
466 >        } finally {
467              node.unlock();
468          }
469      }
# Line 518 | Line 507 | public class FairSemaphore extends Semap
507                  if (node == null) {
508                      count += p;
509                      p = 0;
510 <                }
522 <                else {
510 >                } else {
511                      node.lock();
512                      try {
513                          if (node.cancelled)
# Line 527 | Line 515 | public class FairSemaphore extends Semap
515                          else if (node.permitsNeeded > p) {
516                              node.permitsNeeded -= p;
517                              p = 0;
518 <                        }
531 <                        else {
518 >                        } else {
519                              p -= node.permitsNeeded;
520                              node.permitsNeeded = 0;
521                              node.done.signal();
522                              removeFirst();
523                          }
524 <                    }
538 <                    finally {
524 >                    } finally {
525                          node.unlock();
526                      }
527                  }
528              }
529 <        }
544 <        finally {
529 >        } finally {
530              lock.unlock();
531          }
532      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines