これが最善のアプローチであるかどうかは分かりません。そのため、私はあなたの助けを求める人たちに頼んでいます。Java:どのようにスレッド内でプロセスを実行し続け、その値を読み取るのですか?
これは私の問題です。ユーザーがこのボタンを押してからプログラムがいくつかの値を読み込み、この値をデータベースに保存すると、「読み取り」ボタンがあるアプリケーションを開発しています。
私は、ユーザーが「読み込み」を押すとスレッドを開始すると思います。なぜなら、ユーザーは、フリーズしなくても別のことをすることができるからです。 しかし、このスレッドが読み取った値にアクセスすることはできません。
これを行う別の方法はありますか?
EDIT:
private void jtb_readerItemStateChanged(java.awt.event.ItemEvent evt) {
// getting some values provided by the user
if (buttonReaderState()){
if (supervisory == null)
supervisory = new Supervisory(ip, broadcast, deviceID);
supervisory.start();
}
}
// Supervisory class
public void start(){
Scan scan = new Scan();
Thread t = new Thread(scan);
t.start();
threadState = true;
}
class Scan extends Thread{
public void run(){
// inside the tread I have to initiate another 'supervisory' object, is that right ?
Supervisory s = new Supervisory(ip, broadcast, deviceID);
while (threadState){
try {
s.active();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public void active() throws IOException, Exception {
// getting this values from my hardware like temperature and anothers things.
for (int i = 0; i < ois.size(); i++) {
ObjectIdentifier oi = ois.get(i);
//analog input
if (i == 1)
aI = Float.parseFloat(getPresentValue(localDevice, oi));
//analog output
if (i == 2)
aO = Float.parseFloat(getPresentValue(localDevice, oi));
//binary input
if (i == 3)
bI = getBinaryValue(getPresentValue(localDevice, oi));
//binary output
if (i == 4)
bO = getBinaryValue(getPresentValue(localDevice, oi));
}
}
この値を読んだ後、私は私が構築していますインターフェイスでこの値を表示したいと思いますが、私がこれらの値(AI、AOへのアクセス権を持つことができないようだ、バイ、bO)。
質問が分かりません。 「このスレッドが読み取った値にアクセスできません」という意味はどうですか? – m0skit0
@ m0skit0私の投稿を更新する、私は今より明確になることを願っています;) –