代码之家  ›  专栏  ›  技术社区  ›  Ravi Gupta

将JDK1.5线程本地代码移植到JDK1.4

  •  1
  • Ravi Gupta  · 技术社区  · 16 年前

    我有下面的代码,它在JDK5上运行

    private static ThreadLocal<String> messages = new ThreadLocal<String>();
    private static ThreadLocal<Boolean> dontIntercept = new ThreadLocal<Boolean>() {
        @Override
        protected Boolean initialValue() {
            return Boolean.FALSE;
            }
    };
    

    我希望在JDK1.4上运行它。请告知需要进行哪些更改

    4 回复  |  直到 14 年前
        1
  •  1
  •   Tom Hawtin - tackline    16 年前
    • 删除泛型。
    • 移除协变返回。
    • 去除 @Override 注释。

    所以

    private static final ThreadLocal messages = new ThreadLocal();
    private static final ThreadLocal dontIntercept = new ThreadLocal() {
        protected Object initialValue() {
            return Boolean.FALSE;
        }
    };
    

    使用时

    • 重铸价值 Boolean
    • 拆开 .booleanValue()
    • 盒子 Boolean.valueOf
        2
  •  1
  •   stark    16 年前

    在使用get和put方法时,您必须去掉泛型,然后适当地强制转换值。您还需要确保布尔ThreadLocal在代码中使用的地方正确初始化。

        3
  •  0
  •   Thorbjørn Ravn Andersen    16 年前

    如果程序正确地编写为Java 1.4行为,但使用Java 1.5+表示法,那么我们多次使用的一种方法是使用Retroweaver将编译后的Java 1.5字节代码转换为Java 1.4字节代码。

    http://retroweaver.sourceforge.net/

    其他的存在,但这是我们发现最有效的一个。

        4
  •  -1
  •   willcodejavaforfood    16 年前

    您可以从sun下载源代码并查看ThreadLocal类。

    link

    推荐文章