21.如何在Java中实现线程安全?
在Java中实现线程安全的方法是:
同步
原子并发类
实现并发锁定接口
使用volatile关键字
使用不可变的类
线程安全类。
22. synchronized关键字有什么用途?
同步关键字可以应用于静态/非静态方法或代码块。一次只有一个线程可以访问同步方法,并且如果有多个线程试图访问同一个方法,那么其他线程必须等待一个线程执行方法。同步关键字提供了锁定对象,从而防止竞争条件。
23. wait()和sleep()之间有什么区别?
Wait()是Object类的一个方法。Sleep()是Thread类的一种方法。
Sleep()允许线程进入睡眠状态x毫秒。当线程进入睡眠状态时,它不会释放锁。
Wait()允许线程释放锁定并进入暂停状态。该线程仅在为同一对象调用notify()或notifAll()方法时才有效。
24. HashMap如何在Java中工作?
Java中的HashMap存储键值对。HashMap需要一个哈希函数,并使用hashCode和equals方法为了向和从集合中放置和检索元素。当调用put方法时,HashMap会计算密钥的哈希值并将该对存储在集合内的适当索引中。如果该键存在,则其值将随新值一起更新。HashMap的一些重要特性是其容量,加载因子和调整阈值。
25. String,StringBuffer和StringBuilder有什么区别?
字符串在Java中是不可变的和最终的,所以无论何时执行字符串操作,都会创建一个新的字符串。由于String操作耗费资源,因此Java提供了两个实用程序类:StringBuffer和StringBuilder.
StringBuffer和StringBuilder是可变类。在StringBuilder操作不是线程安全的情况下,StringBuffer操作是线程安全的并且是同步的。
当多线程在单线程环境中使用相同的String和StringBuilder时,将使用StringBuffer.
与StringBuffer相比,StringBuilder的性能更快,因为没有同步开销
更多山东编程培训相关资讯,请扫描下方二维码