在学习Java基础的泛型的时候,有这么个疑问,请问一下大家,这是为什么?
由list的定义可知,list 里的元素 必须是 Father 的子类才行,
虽然 list 指向了 list1,但你实际使用的是 list ,就要按照 list的定义来
抢不到锁的时候是BLOCKED状态
根据参考资料中提供的需求和实现思路,该程序实现了一个简单的多线程采花模拟,每个线程代表一个猴子,共同竞争采摘花朵。在代码实现上,使用了synchronized进行同步,防止多个线程同时对num进行修改导致不安全的情况。在main方法中创建三个线程,分别为猴子A,猴子B,猴子C,通过为线程指定名称来区别不同的猴子。在每个线程的run方法中,使用while循环判断花朵数量是否大于0,如果大于0,则进行采摘并输出采摘信息。程序运行时,由于三个线程共用同一个实例变量num,因此在执行时可能会出现线程安全问题。使用synchronized关键字可以避免这种问题的出现,确保在同一时间只有一个线程对变量num进行修改。
如果遇到Java基础泛型的问题,可以参考Java官方文档,或者查找相关的博客,在学习中多实践,多理解,只有长时间的实践才能更好地掌握Java基础的知识点。针对该程序的优化可以使用Lock对象代替synchronized来保证线程安全,提高程序的效率。