2016-07-17 9 views
0

初心者くさいここに謝罪スレッドクラスのメソッドにアクセスできませんか?

public class Threads implements Runnable { 
    public String threadName; 
    private volatile boolean running = true; 

    public Threads(String name) { 
    threadName = name; 
    } 

    public void setoff() { 
    running = false; //this.running = false; 
    } 

    public void seton() { 
    running = true; //this.running = true; 
    } 

    public void run() { 
    while(this.running) { 
     System.out.println("running"); 
    } 
    if(this.running ==false) { 
     System.out.println("stopped"); 
    } 
    System.out.println("Thread " + threadName + " exiting."); 
    } 
} 

--endクラス

public class MainFrame extends javax.swing.JFrame { 
Thread R1 = null; 
public MainFrame() { 
    initComponents(); 
} 

private void jbtnstartActionPerformed(java.awt.event.ActionEvent evt) {           
     R1 = new Thread(new Threads("Thread 1")); 
     R1.start(); 
}  
} 

ので、私は私のメインクラスからR1のいずれかの関数を呼び出すことができないんですか? (seton()、setoff()etc.など)

ご協力いただければ幸いです。

+1

[ask] – Amit

答えて

1

Threadsクラスのメソッドを呼び出すことはできません。そのタイプのオブジェクトへの参照がないからです。

にコードを変更し

:また、if(this.running ==false)if (! this.running)を記述する必要があります

Threads R1 = new Threads("Thread 1"); 
Thread thread = new Thread(R1); 
thread.start(); 

Thread.sleep(1000); 
R1.setoff(); 

また、その行は削除する必要があります。 この行の実行方法は、前のwhileループを終了することです。これは、this.runningがfalseの場合にのみ発生するため、ifステートメントのテストは冗長です。

+0

を読んでくださいありがとうございました。実行していない部分は、適切なデバッグを行わずにテストしたもので、最後にはそれを削除します。 – Pengiuns

+0

変数名「R1」はJava命名規則に準拠していません。 –

0

Nevermind、それは後に働いた;

Threads mythread = new Threads("222"); 
Thread R1 = new Thread(mythread); 
mythread.seton(); 
R1.start(); 
関連する問題