问题描述
我正在使用 RXTX API 从传感器获取数据。 https://web.archive.org/web/20200530110106/rxtx.qbang.org/wiki/index.php/Event_Based_Two_Way_Communication
我复制粘贴了代码,到目前为止它有效。如何将接收到的数据存储在字符串中?
//I can't store the word anywhere
public static void main ( String[] args )
{
try
{
(new TwoWaySerialComm()).connect("COM3");
}
catch ( Exception e )
{
// Todo Auto-generated catch block
e.printstacktrace();
}
}
我想这样:
public static void main ( String[] args )
{
try
{
String data = (new TwoWaySerialComm()).connect("COM3");
System.out.println("My sensor data: " + data);
}
catch ( Exception e )
{
// Todo Auto-generated catch block
e.printstacktrace();
}
}
非常感谢。
解决方法
如果你需要从新线程返回任何东西或抛出异常,你需要使用 java.util.concurrent.Callable 接口创建一个线程并实现 call() 方法。
它类似于Runnable。但是,启动 Thread 的过程略有不同,因为 Thread 类没有任何接受 Callable 对象的构造函数。
Callable<String> callable = () -> {
// do stuff
return "String that your want to return";
};
FutureTask<String> task = new FutureTask<>(callable);
new Thread(task).start();
System.out.println(task.get());