您的位置:首页 > 其它

2017.01.21 明天做的

2017-01-21 22:31 260 查看
 <?> <T> 两者之间的区别今天是2017.01.22,今天是周日,串的的是春节的休,来了之后看了一下这个问题,其实我经常用的是<T>一般都是在定义 泛型 类型的时候,使用,比如BaseDao等等,下面是我看的那段,作者:zane zhou链接:https://www.zhihu.com/question/31429113/answer/51906707来源:知乎著作权归作者所有,转载请联系作者获得授权。是java泛型的两种用法:List<T>是泛型方法,List<?>是限制通配符List<T>一般有两种用途:1、定义一个通用的泛型方法。伪代码:
public interface Dao{
List<T> getList(){};
}

List<String> getStringList(){
return dao.getList();//dao是一个实现类实例
}

List<Integer> getIntList(){
return dao.getList();
}
上面接口的getList方法如果定义成List<?> ,后面就会报错。‘2、限制方法的参数之间或参数和返回结果之间的关系。
List<T> getList<T param1,T param2>
这样可以限制返回结果的类型以及两个参数的类型一致。List<?>一般就是在泛型起一个限制作用。伪代码:
public Class Fruit(){}

public Class Apple extends Fruit(){}

public void test(? extends Fruit){};

test(new Fruit());
test(new Apple());
test(new String()); //这个就会报错
这样可以现在test方法的参数必须是Fruit或其子类。

以上都是个人平时使用这两个的一些经验和理解,可能有不全面的地方。
其实人家写的很好,这个问题,可以暂时过去了。
之前那篇博客写的 知识,我发现好像最近很忙,没有达到预期的收获,今天周日闲着,来一波,下午健身去,哈,太胖了
线程死锁:
防止线程死锁的方法:
1)、让所有的线程按照同样的顺序获得一组锁。这种方法消除了 X 和 Y 的拥有者分别等待对方的资源的问题。
2)、将多个锁组成一组并放到同一个锁下。前面Java线程死锁的例子中,可以创建一个银器对象的锁。于是在获得刀或叉之前都必须获得这个银器的锁。
3)、将那些不会阻塞的可获得资源用变量标志出来。当某个线程获得银器对象的锁时,就可以通过检查变量来判断是否整个银器集合中的对象锁都可获得。如果是,它就可以获得相关的锁,否则,就要释放掉银器这个锁并稍后再尝试。(没有实现)
命名的时候起好一点,比如说类名:自己节点的名字 Jks+FuZhi比较好
下一个:sync和lock,现在都是lock,用的比较多
首先:这两个的区别:
死锁,基本完美的解释

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: