9)Java 中怎么获取一份线程 dump 文件?-达内培训负责整理
在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件.在 Windows 下,你可以按下 Ctrl + Break 来获取.这样 JVM 就会将线程的 dump 文件打印到标准输出或错误文件中,它可能打印在控制台或者日志文件中,具体位置依赖应用的配置.如果你使用Tomcat.
10)Swing 是线程安全的?(答案)
不是,Swing 不是线程安全的.你不能通过任何线程来更新 Swing 组件,如 JTable、JList 或 JPanel,事实上,它们只能通过 GUI 或 AWT 线程来更新.这就是为什么 Swing 提供 invokeAndWait() 和 invokeLater() 方法来获取其他线程的 GUI 更新请求.这些方法将更新请求放入 AWT 的线程队列中,可以一直等待,也可以通过异步更新直接返回结果.你也可以在参考答案中查看和学习到更详细的内容.
11)什么是线程局部变量?(答案)
线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享.Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方式.但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长.任何线程局部变量一旦在工作完成后没有释放,Java 应用就存在内存泄露的风险.

12)用 wait-notify 写一段代码来解决生产者-消费者问题?(答案)
请参考答案中的示例代码.只要记住在同步块中调用 wait() 和 notify()方法,如果阻塞,通过循环来测试等待条件.
13) 用 Java 写一个线程安全的单例模式(Singleton)?(答案)
请参考答案中的示例代码,这里面一步一步教你创建一个线程安全的 Java 单例类.当我们说线程安全时,意思是即使初始化是在多线程环境中,仍然能保证单个实例.Java 中,使用枚举作为单例类是最简单的方式来创建线程安全单例模式的方式.
14)Java 中 sleep 方法和 wait 方法的区别?(答案)
虽然两者都是用来暂停当前运行的线程,但是 sleep() 实际上只是短暂停顿,因为它不会释放锁,而 wait() 意味着条件等待,这就是为什么该方法要释放锁,因为只有这样,其他等待的线程才能在满足条件时获取到该锁.
15)什么是不可变对象(immutable object)?Java 中怎么创建一个不可变对象?(答案)
不可变对象指对象一旦被创建,状态就不能再改变.任何修改都会创建一个新的对象,如 String、Integer及其它包装类.详情参见答案,一步一步指导你在 Java 中创建一个不可变的类.
16)我们能创建一个包含可变对象的不可变对象吗?
是的,我们是可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝.最常见的例子就是对象中包含一个日期对象的引用.
以上就是达内培训给大家做的内容详解,更多关于IT的学习,请继续关注达内培训