Advertisement
Guest User

Untitled

a guest
May 24th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.39 KB | None | 0 0
  1. package twist;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.ConcurrentModificationException;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Random;
  8.  
  9. import static org.junit.Assert.*;
  10. import java.util.Map.Entry;
  11. import java.util.HashMap;
  12. import java.util.Iterator;
  13. import java.util.concurrent.ConcurrentHashMap;
  14.  
  15. import org.junit.Before;
  16. import org.junit.Test;
  17.  
  18. class CHMtester extends Thread{
  19.  
  20.     Map myMap;
  21.     int count;
  22.     boolean getOrPut;
  23.    
  24.     public CHMtester(Map map){
  25.         myMap = map;
  26.         getOrPut = false;
  27.         count = 0;
  28.     }
  29.    
  30.     public boolean getOrPutm(){
  31.         return getOrPut;
  32.     }
  33.    
  34.    
  35.     public int getCount(){
  36.         return count;
  37.     }
  38.  
  39.     @Override
  40.     public void run(){
  41.         double num = Math.random();
  42.         try {
  43.             sleep(Math.abs((long)num*10));
  44.         } catch (InterruptedException e) {
  45.             e.printStackTrace();
  46.         }
  47.         if(num > 0.5){
  48.             try{
  49.                 if (myMap.put(Math.abs(num), num)!=null)
  50.                     getOrPut = true;
  51.             }
  52.            
  53.             catch(ConcurrentModificationException e) {
  54.                 System.out.print("hello");
  55.                 throw new ConcurrentModificationException();
  56.             }
  57.         }
  58.         else{
  59.             try{
  60.             Random rnd = new Random();
  61.             List keys = new ArrayList(myMap.keySet());
  62.             if (rnd.nextInt(keys.size())>=0)
  63.             if (myMap.get(keys.get(rnd.nextInt(keys.size())))!=null)
  64.                 getOrPut = true;
  65.             }
  66.             catch (IllegalArgumentException ee) {
  67.                
  68.             }
  69.             catch(ConcurrentModificationException ex){
  70.                 System.out.print("hello2");
  71.                 throw new ConcurrentModificationException();
  72.             }
  73.         }
  74.            
  75.     }
  76. }
  77.  
  78.  
  79. public class MyTest {
  80.     static ConcurrentHashMap chm = new ConcurrentHashMap();
  81.    
  82.     @Before
  83.     public void tester(){
  84.         chm.put("A","NA");
  85.     }
  86.    
  87.     @Test
  88.     public void putObjectReturnObject(){
  89.         chm.put("B","NB");
  90.         assertTrue(chm.containsKey("B"));
  91.     }
  92.    
  93.     @Test
  94.     public void putTwinReturnTwin(){
  95.         chm.put("A","NNAA");
  96.         assertTrue(chm.containsValue("NNAA"));
  97.     }
  98.    
  99.     @Test(expected = NullPointerException.class)
  100.     public void putnullReturnNullPointerExceptionone(){
  101.         chm.put("B",null);
  102.     }
  103.    
  104.     @Test(expected = NullPointerException.class)
  105.     public void putnullReturnNullPointerExceptiontwo(){
  106.         chm.put(null,"QWE");
  107.     }
  108.    
  109.     @Test
  110.     public void thr1(){
  111.         Map<String,String> myMap = new ConcurrentHashMap<String,String>();
  112.         myMap.put("1", "3");
  113.         myMap.put("2", "3");
  114.         myMap.put("3", "3");
  115.         myMap.put("4", "3");
  116.         myMap.put("5", "3");
  117.         Iterator it = myMap.entrySet().iterator();
  118.         while (it.hasNext()){
  119.             Entry item = (Map.Entry)it.next();
  120.             myMap.remove(item.getKey());
  121.         }
  122.     }
  123.    
  124.     @Test
  125.     public void thr2(){
  126.         int n=1000;
  127.         int count=0;
  128.         Map<String,String> myMap = new ConcurrentHashMap<String,String>();
  129.         CHMtester [] hm = new CHMtester[n];
  130.         for(int i = 0; i < n; i++)
  131.             hm[i] = new CHMtester(myMap);
  132.         for(int i = 0; i < n; i++)
  133.             hm[i].start();
  134.         Iterator it = myMap.entrySet().iterator();
  135.         while (it.hasNext()){
  136.             Entry item = (Map.Entry)it.next();
  137.             myMap.remove(item.getKey());
  138.         }  
  139.         System.out.print(count);
  140.     }
  141.    
  142.     @Test (expected = ConcurrentModificationException.class)
  143.     public void thr3(){
  144.         Map<String,String> myMap = new HashMap<String,String>();
  145.         myMap.put("A", "B");
  146.         myMap.put("V", "B");
  147.         myMap.put("Z", "B");
  148.         Iterator it = myMap.entrySet().iterator();
  149.         while (it.hasNext()){
  150.            Entry item = (Map.Entry)it.next();
  151.            myMap.remove(item.getKey());
  152.         }
  153.     }
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement