2013-09-21 4 views
-2

Мне интересно, как будет выглядеть код, чтобы иметь программу, которая создает цикл при запуске. Затем этот цикл создает несколько объектов потока на своих собственных потоках, поэтому все они работают одновременно, и все они запускают один и тот же код. Есть ли способ сделать это? как, например, мы делаем 2 потока, они никогда не останавливают цикл, а один всегда является prinintg «thread 1», а 1 всегда печатает «поток 2» одновременно. Это то, что мне интересно. Заранее спасибо!Thread and concurrency hickup

+2

«Есть ли способ сделать это?» Конечно. Попробуй сам! –

+0

Чтобы уточнить, мы не пишем для вас код здесь, на StackOverflow. Вы пишете код (сделайте хотя бы базовый план, метод 'main', насколько это возможно), а затем задайте вопросы об этом коде, если он не работает. –

+0

У вас нет учебника и учебников, чтобы помочь вам в этом домашнем задании? –

ответ

0
class MyTask implements Runnable { 

    public static id = 0; 

    public MyTask(){ 
     id++;  
    } 

    public void run(){ 
     while(true){ 
      System.out.print("Thread " + id); 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

class Generator{ 
    Public static void main(String[] args){ 
     Runnable[] myTasks = new Runnable[2]; 
     myTasks[0] = new MyTask(); 
     myTasks[1] = new MyTask(); 

     for(Runnable r: myTasks){ 
      Thread t = new Thread(r); 
      t.start(); 
     } 
    } 
} 

Я не скомпилировал его. но вот как вы собираетесь это делать. Когда вы запустите класс Generator, начнутся две Threads, и они будут печатать Thread 1 и Thread 2 один раз в секунду навсегда.