上一页 1 ··· 22 23 24 25 26 27 28 29 30 ··· 55 下一页
摘要: Callable 接口类似于 Runnable,从名字就可以看出来了,但是 Runnable 不会返 回结果,并且无法抛出返回结果的异常,而 Callable 功能更强大一些,被线程执 行后,可以返回值,这个返回值可以被 Future 拿到,也就是说,Future 可以拿到 异步执行任务的返回值。 阅读全文
posted @ 2020-07-12 19:11 咔啡 阅读(860) 评论(0) 推荐(0)
摘要: 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程 的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若 干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它 要使用该资源 阅读全文
posted @ 2020-07-12 18:52 咔啡 阅读(677) 评论(0) 推荐(0)
摘要: 不是,Swing 不是线程安全的。你不能通过任何线程来更新 Swing 组件,如 JTable、JList 或 JPanel,事实上,它们只能通过 GUI 或 AWT 线程来更新。 这就是为什么 Swing 提供 invokeAndWait() 和 invokeLater() 方法来获取其 他线程的 阅读全文
posted @ 2020-07-12 18:50 咔啡 阅读(490) 评论(0) 推荐(0)
摘要: List、Set 是,Map 不是。Map 是键值对映射容器,与 List 和 Set 有明显的区别, 而 Set 存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List 是线性结构的容器,适用于按数值索引访问元素的情形。 阅读全文
posted @ 2020-07-12 18:40 咔啡 阅读(796) 评论(0) 推荐(0)
摘要: 当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配。Spring 容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定 在一起,同时装配 bean。 阅读全文
posted @ 2020-07-12 18:35 咔啡 阅读(1084) 评论(0) 推荐(0)
摘要: 何为同步容器:可以简单地理解为通过 synchronized 来实现同步的容器,如果有 多个线程调用同步容器的方法,它们将会串行执行。比如 Vector,Hashtable, 以及 Collections.synchronizedSet,synchronizedList 等方法返回的容器。 可以通过 阅读全文
posted @ 2020-07-12 18:02 咔啡 阅读(159) 评论(0) 推荐(0)
摘要: 该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的 remove()方法。这有一段示例代码,是使用正确的方式来实现在遍历的过程中移 除元素,而不会出现 ConcurrentModificationException 异常的示例代码。 阅读全文
posted @ 2020-07-12 18:00 咔啡 阅读(446) 评论(0) 推荐(0)
摘要: 断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一 般来说,断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试 时开启。为了保证程序的执行效率,在软件发布后断言检查通常是关闭的。断言 是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true;如果表 达式的 阅读全文
posted @ 2020-07-12 17:48 咔啡 阅读(833) 评论(0) 推荐(0)
摘要: Java 中的 String 不可变是因为 Java 的设计者认为字符串使用非常频繁,将字 符串设置为不可变可以允许多个客户端之间共享相同的字符串。 阅读全文
posted @ 2020-07-12 17:45 咔啡 阅读(255) 评论(0) 推荐(0)
摘要: ArithmeticException(算术异常)ClassCastException (类转换异常)IllegalArgumentException (非法参数异常)IndexOutOfBoundsException (下标越界异常)NullPointerException (空指针异常)Secu 阅读全文
posted @ 2020-07-12 17:34 咔啡 阅读(491) 评论(0) 推荐(0)
摘要: Java 中的 TreeMap 是使用红黑树实现的。 阅读全文
posted @ 2020-07-12 17:30 咔啡 阅读(544) 评论(0) 推荐(0)
摘要: HashSet 的内部采用 HashMap 来实现。由于 Map 需要 key 和 value,所以 所有 key 的都有一个默认 value。类似于 HashMap,HashSet 不允许重复的 key,只允许有一个 null key,意思就是 HashSet 中只允许存储一个 null 对象。 阅读全文
posted @ 2020-07-12 17:24 咔啡 阅读(428) 评论(0) 推荐(0)
摘要: 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不 是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护, 但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护 作用了。 阅读全文
posted @ 2020-07-12 17:16 咔啡 阅读(1122) 评论(0) 推荐(0)
摘要: Collection 是一个接口,它是 Set、List 等容器的父接口;Collections 是个一个 工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、 排序、线程安全化等等。 阅读全文
posted @ 2020-07-12 17:11 咔啡 阅读(160) 评论(0) 推荐(0)
摘要: 这需要根据你的经验来回答。一般情况下,你可以说依赖注入,工厂模式,装饰 模式或者观察者模式,随意选择你使用过的一种即可。不过你要准备回答接下的 基于你选择的模式的问题。 阅读全文
posted @ 2020-07-12 17:05 咔啡 阅读(443) 评论(0) 推荐(0)
摘要: 线程调度器选择优先级最高的线程运行,但是,如果发生以下情况,就会终止线 程的运行: 1、线程体中调用了 yield 方法让出了对 cpu 的占用权利 2、线程体中调用了 sleep 方法使线程进入睡眠状态 3、线程由于 IO 操作受到阻塞 4、另外一个更高优先级线程出现 5)在支持时间片的系统中,该 阅读全文
posted @ 2020-07-12 16:46 咔啡 阅读(787) 评论(0) 推荐(0)
摘要: 1、CountDownLatch 2、CyclicBarrier 3、Semaphore 4、Exchanger 阅读全文
posted @ 2020-07-12 16:43 咔啡 阅读(470) 评论(0) 推荐(0)
摘要: Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。 但是 int 是一个原始类型的数据,所以占用的空间更少。 阅读全文
posted @ 2020-07-12 15:51 咔啡 阅读(2343) 评论(0) 推荐(0)
摘要: IO 对 Java 应用的性能非常重要。理想情况下,你不应该在你应用的关键路径上 避免 IO 操作。下面是一些你应该遵循的 Java IO 最佳实践: a)使用有缓冲区的 IO 类,而不要单独读取字节或字符。 b)使用 NIO 和 NIO2 c)在 finally 块中关闭流,或者使用 try-wi 阅读全文
posted @ 2020-07-12 15:22 咔啡 阅读(346) 评论(0) 推荐(0)
摘要: java.lang.Cloneable 是一个标示性接口,不包含任何方法,clone 方法在 object 类中定义。并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ 或 其他本地语言实现的。 阅读全文
posted @ 2020-07-12 13:58 咔啡 阅读(447) 评论(0) 推荐(0)
摘要: 不行,因为对象的 hashcode 值必须是相同的。参见答案获取更多关于 Java 中 重写 hashCode() 方法的知识。 阅读全文
posted @ 2020-07-12 13:56 咔啡 阅读(1022) 评论(0) 推荐(0)
摘要: 一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量 会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。为什么? 因为 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正 在修改该 long 变量的值,另一个线程可能只能看到该 阅读全文
posted @ 2020-07-12 13:53 咔啡 阅读(376) 评论(0) 推荐(0)
摘要: 线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共 享。Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方 式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心, 在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要 阅读全文
posted @ 2020-07-12 13:04 咔啡 阅读(217) 评论(0) 推荐(0)
摘要: Busy spin 是一种在不释放 CPU 的基础上等待事件的技术。它经常用于避免丢 失 CPU 缓存中的数据(如果线程先暂停,之后在其他 CPU 上运行就会丢失)。 所以,如果你的工作要求低延迟,并且你的线程目前没有任何顺序,这样你就可 以通过循环检测队列中的新消息来代替调用 sleep() 或  阅读全文
posted @ 2020-07-12 13:02 咔啡 阅读(894) 评论(0) 推荐(0)
摘要: AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。 阅读全文
posted @ 2020-07-12 12:59 咔啡 阅读(491) 评论(0) 推荐(0)
摘要: 装配,或bean 装配是指在Spring 容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起。 阅读全文
posted @ 2020-07-12 12:56 咔啡 阅读(520) 评论(0) 推荐(0)
摘要: 有可能,两个不相等的对象可能会有相同的 hashcode 值,这就是为什么在 hashmap 中会有冲突。相等 hashcode 值的规定只是说如果两个对象相等,必 须有相同的 hashcode 值,但是没有关于不相等对象的任何规定。 阅读全文
posted @ 2020-07-12 12:52 咔啡 阅读(1509) 评论(0) 推荐(0)
摘要: 虽然适配器模式和装饰器模式的结构类似,但是每种模式的出现意图不同。适配 器模式被用于桥接两个接口,而装饰模式的目的是在不修改类的情况下给类增加 新的功能。 阅读全文
posted @ 2020-07-12 12:51 咔啡 阅读(4677) 评论(0) 推荐(0)
摘要: JRE 代表 Java 运行时(Java run-time),是运行 Java 引用所必须的。JDK 代 表 Java 开发工具(Java development kit),是 Java 程序的开发工具,如 Java 编译器,它也包含 JRE。JVM 代表 Java 虚拟机(Java virtual 阅读全文
posted @ 2020-07-12 12:48 咔啡 阅读(960) 评论(0) 推荐(0)
摘要: 从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法 糖。内部实现在 switch 中使用字符串的 hash code。 30、Java 中的构造器链是什么? 当你从一个构造器中调用另一个构造器,就是 Java 中的构造器链。这种情况只在 重载了类的构造器的时 阅读全文
posted @ 2020-07-12 12:26 咔啡 阅读(820) 评论(0) 推荐(0)
摘要: Spring 通过提供 ORM 模块,支持我们在直接 JDBC 之上使用一个对象/关系映射 映射(ORM)工具,Spring 支持集成主流的 ORM 框架,如 Hiberate,JDO 和 iBATIS SQL Maps。Spring 的事务管理同样支持以上所有 ORM 框架及 JDBC。 阅读全文
posted @ 2020-07-12 12:19 咔啡 阅读(146) 评论(0) 推荐(0)
摘要: 当通过 Java 命令启动 Java 进程的时候,会为它分配内存。内存的一部分用于 创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC 是 JVM 内 部的一个进程,回收无效对象的内存用于将来的分配。 阅读全文
posted @ 2020-07-12 12:17 咔啡 阅读(507) 评论(0) 推荐(0)
摘要: List 是一个有序集合,允许元素重复。它的某些实现可以提供基于下标值的常量 访问时间,但是这不是 List 接口保证的。Set 是一个无序集合。 阅读全文
posted @ 2020-07-12 10:08 咔啡 阅读(410) 评论(0) 推荐(0)
摘要: Comparable 接口用于定义对象的自然顺序,而 comparator 通常用于定义用户 定制的顺序。Comparable 总是只有一个,但是可以有多个 comparator 来定义 对象的顺序。 阅读全文
posted @ 2020-07-12 08:47 咔啡 阅读(277) 评论(0) 推荐(0)
摘要: 不能,根据 hash code 的规定,这是不可能的。 阅读全文
posted @ 2020-07-12 08:44 咔啡 阅读(367) 评论(0) 推荐(0)
摘要: 公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里 的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些 变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你 使用了一个内部的或第三方库中的公有编译时常量,但是这 阅读全文
posted @ 2020-07-12 08:32 咔啡 阅读(610) 评论(0) 推荐(0)
摘要: 是的,我们是可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点, 不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。 最常见的例子就是对象中包含一个日期对象的引用。 阅读全文
posted @ 2020-07-12 08:07 咔啡 阅读(774) 评论(0) 推荐(0)
摘要: 可以使用 String 接收 byte[] 参数的构造器来进行转换,需要注意的点是要使用 的正确的编码,否则会使用平台默认编码,这个编码可能跟原来的编码相同,也 可能不同。 阅读全文
posted @ 2020-07-12 08:02 咔啡 阅读(2073) 评论(0) 推荐(0)
摘要: 如果不是特别关心内存和性能的话,使用 BigDecimal,否则使用预定义精度的 double 类型。 阅读全文
posted @ 2020-07-12 07:59 咔啡 阅读(1605) 评论(0) 推荐(0)
摘要: 由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。 Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集 成和可测试性。由于依赖注入和控制反转,JDBC 得以简化。它是开源免费的。 阅读全文
posted @ 2020-07-11 21:48 咔啡 阅读(550) 评论(0) 推荐(0)
上一页 1 ··· 22 23 24 25 26 27 28 29 30 ··· 55 下一页