zoukankan      html  css  js  c++  java
  • Java练习题

    1.实现一个类似于ConcurrentHashMap的分段加锁

    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    public class SegmentLock {
    	private static final int DEFAULT_INITIAL_CAPACITY = 16;
    
    	private static final int MAXIMUM_CAPACITY = 1 << 30;
    
    	private static final int MAX_SEGMENTS = 1 << 16; // slightly conservative
    
    	final int segmentMask;
    
    	final int segmentShift;
    
    	private Pair<Lock, Map<String, Counter>>[] segmentLocks;
    
    	public SegmentLock(final int concurrentLevel) {
    		int size = 1;
    		int shift = 0;
    		while (size < concurrentLevel) {
    			size <<= 1;
    			shift += 1;
    		}
    
    		segmentMask = size;
    		segmentShift = 32 - shift;
    
    		for (int i = 0; i < size; i++) {
    			segmentLocks[i] = new Pair(new ReentrantLock(), new HashMap<String, Counter>());
    		}
    	}
    
    	public Pair<Lock, Map<String, Counter>> get(final String key) {
    		return segmentLocks[(hash(key.hashCode()) >> segmentShift) & segmentMask];
    	}
    
    	private static int hash(int h) {
    		h += (h << 15) ^ 0xffffcd7d;
    		h ^= (h >>> 10);
    		h += (h << 3);
    		h ^= (h >>> 6);
    		h += (h << 2) + (h << 14);
    		return h ^ (h >>> 16);
    	}
    
    	static class Pair<Left, Right> {
    		private final Left left;
    		private final Right right;
    
    		public Pair(final Left left, final Right right) {
    			this.left = left;
    			this.right = right;
    		}
    	}
    
    	static class Counter {
    		private int count;
    
    		public int increaseAndGet() {
    			return ++count;
    		}
    
    		public int decreaseAndGet() {
    			return --count;
    		}
    
    		public int get() {
    			return count;
    		}
    	}
    }
    

      

    2.怎样初始化一个泛型数组?

       new ArrayList<String>[]();

  • 相关阅读:
    删除:恶意主页
    Winuser.h
    安天磁盘免疫工具研究的初步解答
    C#读写XML文件
    阻止系统关机
    在WebBrowser中屏蔽对话框
    如何用正确的方法写出高质量软件的75条体会
    怪事~
    GRUB4DOS中文自述文档;Grub4dos中文ReadMe
    开始菜单变成的经典样式,XPsuaa样式丢失
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5464707.html
Copyright © 2011-2022 走看看