2012-06-06 2 views
2

Это первый раз, когда я пишу многопоточную программу. У меня есть сомнения, что несколько потоков, которые я создаю, будут указывать на один и тот же метод запуска и выполнить задачу, написанную в run(). , но я хочу различные темы для выполнения различных задач, например 1 поток будет вставить в другую базу данных, обновление и т.д. Мой вопрос заключается в том, чтобы создавать различные темы, которые будут выполнять различные задачинесколько потоков, выполняющих разные задачи

+2

и вопрос в том, что такое? –

+0

реализовать 'java.lang.Runnable' –

ответ

3

Создайте темы, которые делают различные задания:

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(); 
2

вы можете создавать различные классы, реализующие Runnable с различными вакансии - только для начала

2

Вы можете запустить метод run() с вашими условиями (вставить базу данных, обновить и т. д.). Инициализируя свой класс потоков, передайте аргумент в конструкторе класса, который определит, какую задачу будет выполнять этот поток для вас.

0

Вы можете использовать внутренний класс для этого. Как ниже

 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(); 

     } 
} 
+0

, используя объект класса, не требуется для внутреннего класса. Но это не остановит вас. –

1

/* Эта программа создает три разных потока для выполнения трех различных задач. Thread-prints A ... Z, Thread-2 prints 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(); 

    } 
} 
Смежные вопросы