06-01 09:09
2021-06-01 09:11
(1)wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;(2)sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException异常;(3)notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状...[ 查看全部 ]
05-31 09:28
2021-05-31 09:29
如果不是特别关心内存和性能的话,使用BigDecimal,否则使用预定义精度的double类型。[ 查看全部 ]
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可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的...[ 查看全部 ]