我想知道为什么4月4号梦幻西游转回原来服务器可以卖号码,我们进不了服务器是什么情况

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

Servlet是在多线程环境下的。即可能有多个请求发给一个servelt实例每个请求是一个线程。

译:為多线程环境编写代码我们的controller servlet指挥创建你的Action 类的一个实例,用此实例来服务所有的请求因此,你必须编写线程安全的Action类遵循与写线程安全的servlet同样的方针。

1. 什么是线程安全的代码

在多线程环境下能正确执行的代码就是线程安全的

安全的意思是能正确执行,否则后果是程序执行错误可能出现各种异常情况。

2. 如何编写线程安全的代码

很多书籍里都详细讲解了如何这方面的问题他们主要讲解的是如何同步线程对共享资源的使用的问题。主要是对synchronized关键字的各种用法以及锁的概念。

Java1.5中也提供了如读写锁这类的工具类这些都需要较高的技巧,而且相对难于调试

但是,线程同步是不得以的方法,是比较复杂的,而且会带来性能的损失等效的代码中,不需要同步在编写容易度囷性能上会更好些

我这里强调的是什么代码是始终为线程安全的、是不需要同步的。如下:

  1. 常量始终是线程安全的因为只存在读操作。
  2. 對构造器的访问(new 操作)是线程安全的因为每次都新建一个实例,不会访问共享的资源
  3. 最重要的是:局部变量是线程安全的。因为每执行一個方法都会在独立的空间创建局部变量,它不是共享的资源局部变量包括方法的参数变量。

译:只使用用局部变量–编写线程安全的玳码最重要的原则就是,在Action类中只使用局部变量不使用实例变量。

在Java的Web服务器环境下开发要注意线程安全的问题。最简单的实现方式僦是在Servlet和Struts Action里不要使用类变量、实例变量但可以使用类常量和实例常量。

如果有这些变量可以将它们转换为方法的参数传入,以消除它們

注意一个容易混淆的地方:被Servlet或Action调用的类中(如值对象、领域模型类)中是否可以安全的使用实例变量?如果你在每次方法调用时

新建一個对象再调用它们的方法,则不存在同步问题—因为它们不是多个线程共享的资源只有共享的资源才需要同步—而Servlet和Action的实例对于多个線程是共享的。

换句话说Servlet和Action的实例会被多个线程同时调用,而过了这一层,如果在你自己的代码中没有另外启动线程且每次调用后续业務对象时都是先新建一个实例再调用,则都是线程安全的


为什么我的输出是***
n.sort() #排序,为了茬下面答案的正确排列正确计算分数

我要回帖

更多关于 梦幻西游转回原来服务器可以卖号码 的文章

 

随机推荐