資源簡介
Java 并發編程實戰pdf + 隨書源碼 (書高清版,帶超詳細書簽目錄)
本資源轉載自網絡,供學習研究之用,如用于商業用途,請購買正版,如有侵權,請聯系我或CSDN刪除。
代碼片段和文件信息
package?net.jcip.examples;
import?java.util.*;
/**
?*?Animals
?*?
?*?Thread?confinement?of?local?primitive?and?reference?variables
?*
?*?@author?Brian?Goetz?and?Tim?Peierls
?*/
public?class?Animals?{
????Ark?ark;
????Species?species;
????Gender?gender;
????public?int?loadTheArk(Collection?candidates)?{
????????SortedSet?animals;
????????int?numPairs?=?0;
????????Animal?candidate?=?null;
????????//?animals?confined?to?method?don‘t?let?them?escape!
????????animals?=?new?TreeSet(new?SpeciesGenderComparator());
????????animals.addAll(candidates);
????????for?(Animal?a?:?animals)?{
????????????if?(candidate?==?null?||?!candidate.isPotentialMate(a))
????????????????candidate?=?a;
????????????else?{
????????????????ark.load(new?AnimalPair(candidate?a));
????????????????++numPairs;
????????????????candidate?=?null;
????????????}
????????}
????????return?numPairs;
????}
????class?Animal?{
????????Species?species;
????????Gender?gender;
????????public?boolean?isPotentialMate(Animal?other)?{
????????????return?species?==?other.species?&&?gender?!=?other.gender;
????????}
????}
????enum?Species?{
????????AARDVARK?BENGAL_TIGER?CARIBOU?DINGO?ELEPHANT?FROG?GNU?HYENA
????????IGUANA?JAGUAR?KIWI?LEOPARD?MASTADON?NEWT?OCTOPUS
????????PIRANHA?QUETZAL?RHINOCEROS?SALAMANDER?THREE_TOED_SLOTH
????????UNICORN?VIPER?WEREWOLF?XANTHUS_HUMMINBIRD?YAK?ZEBRA
????}
????enum?Gender?{
????????MALE?FEMALE
????}
????class?AnimalPair?{
????????private?final?Animal?one?two;
????????public?AnimalPair(Animal?one?Animal?two)?{
????????????this.one?=?one;
????????????this.two?=?two;
????????}
????}
????class?SpeciesGenderComparator?implements?Comparator?{
????????public?int?compare(Animal?one?Animal?two)?{
????????????int?speciesCompare?=?one.species.compareTo(two.species);
????????????return?(speciesCompare?!=?0)
??????????????????????speciesCompare
????????????????????:?one.gender.compareTo(two.gender);
????????}
????}
????class?Ark?{
????????private?final?Set?loadedAnimals?=?new?HashSet();
????????public?void?load(AnimalPair?pair)?{
????????????loadedAnimals.add(pair);
????????}
????}
}
評論
共有 條評論