java基础(2)

1、两线程程序对初始为零的非负整数,一增一减, 同时每次对变量输出。
生产者消费者问题(用object类中wait和notify方法)
2、关于wait,notify,notifyAll,以及sleep方法的关系(重要)
1)如果一个线程调用了某个对象的wait方法,那么该线程首先必须要拥有该对象的锁,(换句话说,一个线程如果调用了某个对象的wait方法,那么该wait方法必须在synchronize中)
2)在一个线程调用某个对象了wait方法,那么该线程就会释放该对象的锁
3)在java对象,中,有两种池(锁池、等待池)
4)如果一个线程调用了某个对象的wait方法,那么该线程进入该对象的等待池中(释放锁),如果未来的某一时刻,另外的一个线程调用了相同对象的notify或者notifyall方法,那么在等待池中等待的线程就会起来进入到该对像的锁池中,去等待获得该对象的锁,如果获得锁成功后,那么该线程将继续沿着wait方法之后的路径去执行。

3、notify(随机唤醒一个)、notifyAll(全部唤醒)、notify(20)(20秒后自己唤醒)   sleep(和notify区别,如果一个线程调用了sleep方法时,不会失去对象的锁定拥有权。)

4、synchronize关键字的作用
在某个对象中所有synchronize方法,在某一个时刻,只能有唯一的线程去访问这些synchronize方法

即,若一个对象有多个synchronize,当在执行其中的某一synchronize方法时,整个对象是锁定的,此时其他的synchronize对象也是锁定的。

如果一个synchonize方法是静态的,那么该synchronize关键字表示给当前对象对应的Class上锁,(每个类不管生成多少个对象,对应的Class对象只有一个!)

 

5,  Collections (集合的工具类:集合的反序、查找等)和 Collection(集合顶层接口,下面有list和set)

6, HashMap和Hashtable的区别?

1). HashMap的方法都是非同步的,对于单线程来说,效率要高

   Hashtable方法是同步的,对于单线程来说,效率要低

2). HashMap的key和value都可以为空。

   Hashtable的key和value都不可以为空。

7. short s = 1;
   s = s + 1;——————>编译会通不过(大的类型转换成小的,需要强制类型转换)修改成s=(short)(s+1)

 

   short s = 1;
   s += 1;  准确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值