- Java中线程的sleep()和wait()有什么区别
1、这两个方法来自不同的类。分别是:sleep来自Thread类,而wait来自Object类。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。
- 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。
Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。 - 3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
synchronized(x){
x.notify()
//或者wait()
}- 4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
将一个字符串逆序,不要使用反转函数
String message = "he saw a racecar"; StringBuilder rev = new StringBuilder(); for (int i = message.length() - 1; i >= 0; i--) rev.append(message.charAt(i)); System.out.println(rev.toString());
forward和redirect的区别
forward方式:1
request.getRequestDispatcher("/somePage.jsp").forward(request, response);
redirect方式:
1 |
|
int a[][];//二维数组其实就是数组成员是一维数组的一维数组
int []b[];//这5个都可以看成艺术组为元素的数组
int[] c[];
int [][]d;
int[] []e;
`
什么是 AOP?
面向方面的编程
(Aspect-oriented programming)
,
它可以运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. 比如检测某个模块的运行时间. 加入额外的功能 (introduce)
下面是专业的所法 :
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。