05-31 09:26
2021-05-31 09:28
虽然两者都是用来暂停当前运行的线程,但是sleep()实际上只是短暂停顿,因为它不会释放锁,而wait()意味着条件等待,这就是为什么该方法要释放锁,因为只有这样,其他等待的线程才能在满足条件时获取到该锁。[ 查看全部 ]
05-31 09:24
2021-05-31 09:28
线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java提供ThreadLocal类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如web服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完...[ 查看全部 ]
05-31 09:05
2021-05-31 09:05
不是,Swing不是线程安全的。你不能通过任何线程来更新Swing组件,如JTable、JList或JPanel,事实上,它们只能通过GUI或AWT线程来更新。这就是为什么Swing供invokeAndWait()和invokeLater()方法来获取其他线程的GUI更新请求。这些方法将更新请求放入AWT的线程队列...[ 查看全部 ]
05-31 09:04
2021-05-31 09:06
在Linux下,你可以通过命令kill-3PID(Java进程的进程ID)来获取Java应用的dump文件。在Windows下,你可以按下Ctrl+Break来获取。这样JVM就会将线程的dump文件打印到标准输出或错误文件中,它可能打印在控制台或者日志文件中,具体位置依赖应用的配置。如果你使用Tomcat。[ 查看全部 ]
05-28 09:33
2021-05-28 09:33
List是一个有序集合,允许元素重复。它的某些实现可以提供基于下标值的常量访问时间,但是这不是List接口保证的。Set是一个无序集合。[ 查看全部 ]
05-28 09:31
2021-05-28 09:32
公共静态不可变(publicstaticfinal)变量也就是我们所说的编译期常量,这里的public可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的...[ 查看全部 ]
05-28 09:30
2021-05-28 09:32
可以通过java.lang.Runtime类中与内存相关方法来获取剩余的内存,总内存及最大堆内存。通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。Runtime.freeMemory()方法返回剩余空间的字节数,Runtime.totalMemory()方法总内存的字节数,Runtime.maxMemo...[ 查看全部 ]
05-28 09:21
2021-05-28 09:22
当你从一个构造器中调用另一个构造器,就是Java中的构造器链。这种情况只在重载了类的构造器的时候才会出现。[ 查看全部 ]