Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
dev:java:lang:weakrefs [2012/08/04 18:40]
jamis7005 создано
dev:java:lang:weakrefs [2012/08/04 20:34] (текущий)
jamis7005
Строка 2: Строка 2:
  
 <code java> <code java>
- +class TestA 
-class TheStrong ​+ private ​Object link;
- public ​Object link;+
   
  public Object getLink(){ return link; }  public Object getLink(){ return link; }
  
- public void print(Object newlink){+ public void setLinkAndPrint(Object newlink){
  link = newlink;  link = newlink;
- System.out.println("​TheStrongmy link =" + getLink());+ print(); 
 +
 + 
 + public void print(){ 
 + Runtime r = Runtime.getRuntime();​ 
 + r.gc(); 
 + System.out.println(getClass().getName() + ": ​ link =" + getLink());
  }  }
 } }
  
-class TheWeak ​+class TestB 
- public ​WeakReference<​Object>​ link;+ private ​WeakReference<​Object>​ link;
   
  public Object getLink(){ return link.get();​ }  public Object getLink(){ return link.get();​ }
   
- public void print(Object newlink){+ public void setLinkAndPrint(Object newlink){
  link =  new WeakReference<>​( newlink );  link =  new WeakReference<>​( newlink );
- System.out.println("​TheWeak  my link =" + getLink());+ print(); 
 +
 +  
 + public void print(){ 
 + Runtime r = Runtime.getRuntime();​ 
 + r.gc(); 
 + System.out.println(getClass().getName() + ": ​ link =" + getLink());
  }  }
 } }
  
-public class Test +public class TestWeakRef ​
- public static void main(String[] args) throws IOException ​+ public static void main(String[] args) { 
- TheWeak a1 = new TheWeak(); + TestA a = new TestA(); 
- a1.print(Arrays.asList(1,2,3)); + a.setLinkAndPrint(Arrays.asList(4,5,6)); 
-  + a.print();
- TheStrong b1 = new TheStrong();​ +
- b1.print(Arrays.asList(4,​5,​6));+
   
- Runtime r Runtime.getRuntime(); + TestB b new TestB(); 
- r.gc(); + b.setLinkAndPrint(Arrays.asList(1,2,3)); 
-  + b.print();
- System.out.println("​TheWeak: ​  its link=" + a1.link.get()); +
- System.out.println("​TheStrong:​ its link=" + b1.link);+
  }  }
 } }
  
 +</​code>​
  
 +Result:
 <​code>​ <​code>​
 +promauto.batchext.TestA: ​ link =[4, 5, 6]
 +promauto.batchext.TestA: ​ link =[4, 5, 6]
 +promauto.batchext.TestB: ​ link =[1, 2, 3]
 +promauto.batchext.TestB: ​ link =null
 +
 +
 +</​code>​
 +
dev/java/lang/weakrefs.1344091230.txt.gz · Последние изменения: 2012/08/04 18:40 — jamis7005
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0