java - 无法获取 Java 线程本地对象中存储的变量的整数值

标签 java multithreading thread-local

我试图获取线程本地对象的整数值,如下面的代码所示,但它不断抛出错误。但是,当我尝试将其显示为字符串时,它会显示。

我的问题:如何实现提取整数值?

注意:按照下面的代码解析字符串不起作用

package ids;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Random;
import javax.swing.SwingWorker;
import jpcap.*;
import jpcap.packet.Packet;


public class InterfaceThread implements Runnable {

ThreadLocal MyInterfaceNumber = new ThreadLocal();

InterfaceThread() {

}

InterfaceThread(int InterfaceNumber) {
    MyInterfaceNumber.set(InterfaceNumber);
    System.out.println("Check: " + MyInterfaceNumber.get());
}

@Override
public void run() {
    String IntNum = (String) MyInterfaceNumber.get();

    int InterfaceToPrint = Integer.parseInt(IntNum);
    System.out.println("Interface: " + InterfaceToPrint);
    Messages msg = new Messages();
    Printer print = new Printer();

    try {

//Open Selected Interface     
        JpcapCaptor captor =         JpcapCaptor.openDevice(IDS.Interfaces[InterfaceToPrint], 65535, true, 5000);
        System.out.println("Interface Dlink Name: " + IDS.Interfaces[InterfaceToPrint].description);
        //  print.TextAreaAppend("Traffic on Interface "+InterfaceToPrint+" Now Being Sniffed\n");
        while (MainFrame.StopSniffing == false) {
            captor.processPacket(-1, new Printer());
        }
        //captor.loopPacket(-1, new Printer());
        captor.close();

    } catch (IOException ex) {
              msg.ErrorMessages("Interface " + InterfaceToPrint + " Encountered    Error: " + ex);
    }

}

public void Start(int InterfaceNumber) {

    InterfaceThread interfaceT = new InterfaceThread(InterfaceNumber);

    Thread thread = new Thread(interfaceT);

    thread.start();

  }

}

最佳答案

我建议你使用泛型来简化代码

private final ThreadLocal<Integer> int = new ThreadLocal<>();

// to read
Integer i = int.get();

// to write
int.set(i);

关于java - 无法获取 Java 线程本地对象中存储的变量的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35282349/

相关文章:

python - Python 中的线程局部变量——关于可伸缩性的负面影响?

java - java中InheritableThreadlocal值自动改变

java - 如何从 Java 调用具有自定义复杂对象类型作为输入参数的 Oracle PL-SQL 过程

c++ - boost scoped_lock。这个会锁吗?

java - 在Java中将列表中的元素分组到不重复的子列表中

java - 如何在其运行方法完成后清理线程?

c - 基准测试、顺序 x 并行程序。亚线性加速?

java - 如何在 web-inf/class 下的类命名空间中创建/写入文件

Java:删除 "Comparable is a raw type"警告

Java RegEx - 对于不包含 "."的整数