4

マルチスレッドプログラムを書くのはこれが初めてです。私が作成する複数のスレッドが同じrunメソッドを指し、run()で記述されたタスクを実行するのではないかと疑っています。しかし、私は異なるスレッドに異なるタスクを実行させたいです。たとえば、1つのスレッドがデータベースに他の更新などを挿入します。私の質問は、異なるタスクを実行する異なるスレッドを作成する方法です。

4

5 に答える 5

4

さまざまなジョブを実行するスレッドを作成します。

public class Job1Thread extends Thread {

    @Override
    public void run() {
        // Do job 1 here
    }

}

public class Job2Thread extends Thread {

    @Override
    public void run() {
        // Do job 2 here
    }

}

スレッドを開始すると、スレッドが機能します。

Job1Thread job1 = new Job1Thread();
Job2Thread job2 = new Job2Thread();

job1.start();
job2.start();
于 2012-06-06T06:54:47.133 に答える
3

さまざまなジョブでRunnableを実装するさまざまなクラスを作成できます-開始するだけです

于 2012-06-06T06:36:45.020 に答える
3

run()メソッドは、条件(データベースの挿入、更新など)で実行できます。スレッドクラスを初期化するときに、クラスコンストラクターに引数を渡します。これにより、このスレッドが実行するタスクが定義されます。

于 2012-06-06T06:40:02.937 に答える
2

/* このプログラムは、3 つの異なるタスクを実行するために 3 つの異なるスレッドを作成します。Thread-1 は A...Z を印刷し、Thread-2 は 1...100 を印刷し、Thread-3 は 100-200 を印刷します。タスクごとに異なるクラスを作成せずにマルチスレッドを理解するための非常に基本的なプログラム */

class ThreadingClass implements Runnable {
   private Thread t;
   private String threadName;

   ThreadingClass( String name) {
      threadName = name;
      System.out.println("Creating " +  threadName );
   }

   public void run() {
      System.out.println("Running " +  threadName );
      if( threadName == "Thread-1" ){
          this.printAlpha();
      }
      else if( threadName == "Thread-2" ){
          this.printOneToHundred();
      }
      else{
          this.printHundredMore();
      }
   }
   public void printAlpha(){
       for(int i=65; i<=90; i++)
       {
           char x = (char)i;
           System.out.println("RunnableDemo: " + threadName + ", " + x);
       }
   }
   public void printOneToHundred(){
       for(int i=1; i<=100; i++)
       {

           System.out.println("RunnableDemo: " + threadName + ", " + i);
       }
   }
   public void printHundredMore(){
       for(int i=100; i<=200; i++)
       {

           System.out.println("RunnableDemo: " + threadName + ", " + i);
       }
   }

   public void start () {
      System.out.println("Starting " +  threadName );
      if (t == null) {
         t = new Thread (this);
         t.start ();
         t.setName(threadName);
      }
   }
}
public class MultiTasking {

   public static void main(String args[]) {
      ThreadingClass R1 = new ThreadingClass ( "Thread-1");


      ThreadingClass R2 = new ThreadingClass ( "Thread-2");


      ThreadingClass R3 = new ThreadingClass ( "Thread-3");
      R1.start();
      R2.start();
      R3.start();

   }   
}
于 2016-10-06T08:05:15.383 に答える
1

これには内部クラスを使用できます。以下のように

      class first  implements Runnable 

{

      public void run(){  
            System.out.println("hello by tobj");  
             }   
          public static void main(String args[]){  
             first obj=new first();  
             Thread tobj =new Thread(obj);  
             tobj.start();
             Thread t2 =new Thread(obj)
             {
                  public void run()
                  {
                    System.out.println("hello by t2");
                  }
             };
             Thread t = new Thread(obj)
             {
                  public void run()
                  {
                    System.out.println("hello by t");
                  }
             };
             t.start();
             t2.start();

         }
}
于 2016-02-07T06:49:37.983 に答える