如何避免非线性安全?
1。概念
1)实例变量
| 实例变量是在堆中分配的,并被属于该实例的所有线程共享,所以不是线程安全的. |
| (2)JSP系统提供的8个类变量 |
| JSP中用到的OUT,REQUEST,RESPONSE,SESSION,CONFIG,PAGE,PAGECONXT是线程安全的,APPLICATION在整个系统内被使用,所以不是线程安全 的. |
| (3)局部变量 |
| 局部变量在堆栈中分配,因为每个线程都有它自己的堆栈空间,所以是线程安全的. |
| (4)静态类 |
| 静态类不用被实例化,就可直接使用,也不是线程安全的. |
| (5)外部资源: |
在程序中可能会有多个线程或进程同时操作同一个资源(如:多个线程或进程同时对一个文件进行写操作).此时也要注意同步问题. 2。解决办法 |
| (1)采用单线程方式 |
| 在该JSP文件中加上: <%@ page isThreadSafe="false" %>,使它以单线程方式执行,这时,仍然只有一个实例,所有客户端的请求以串行方 式执行。这样会降低系统的性能. |
(2)对函数加synchronized进行线程同步,该JSP仍然以多线程方式执行,但也会降低系统的性能.
|
博客围绕如何避免非线性安全展开,提及了相关概念中的实例变量,但未详细阐述。涉及信息技术领域中多线程等可能引发的安全问题。

1万+

被折叠的 条评论
为什么被折叠?



