🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
1 messages
1 total messages Started by Artur Tyloch Mon, 01 Sep 1997 23:20
Watki w aplecie, runnable
#934
Author: Artur Tyloch
Date: Mon, 01 Sep 1997 23:20
91 lines
2890 bytes
Cześć Javowcy.
Watki again. Watki forever.
Probuje zrobic cos takiego.
Definiuje klase
public class Dwa extends Applet implements Runnable
 I teraz w tym aplecie probuje utworzyc dwa watki:
(przyklad tworzenia pierwszego)
watek1 = new Thread(new Dwa(120,50, new Random()));

Jak widac watek ten ma byc typu Dwa (sic!)
Z moich doswiadczen nie jest to dopuszczalne.....
Wystepuje tu przy probie uruchomienia blad: NoSuchMethodError
Wiem, że można utowrzyć nowy wątek przez "rozgalezienie" np:
watek1 = new Thread(this);

Moja proba wynika z tego, że każdy nowy wątek ma miec inne
parametry przekazywane przy inicjalizacji. : Dwa(120,50, new Random())
i dlatego zdefiniowalem dodatkowy konstruktor klasy Dwa(int,int,Random)
oprocz domyslnego dziedziczonego z klasy Applet: Dwa()

Wiem jak to zrobic inaczej tj. np:
rozdzielajac na dwie klasy i
-definiujac jako podklase Thread lub
- implementujac Runnable.

Chcialbym sie upewnic, ze to co probuje zrobic jest niepoprawne
i moze jeszcze dlaczego, a moze gdzies tu jest pies pogrzebany :)  .

Artur

Definicja klasy Dwa:

import java.util.*;
import java.awt.*;
import java.applet.*;

public class Dwa extends Applet implements Runnable
{
   Thread watek1 = null;
   Thread watek2 = null;
   int m_x,m_y;
   Random m_r = null;

   Dwa(int x, int y, Random r)
   {
     m_x = x;
     m_y = y;
     m_r = r;
   }
   public void start()
   {
     if(watek1 == null);
     {
       Dwa rysuj = new Dwa(120,50, new Random());
       watek1 = new Thread(rysuj);
       watek1.start();
    }
    if(watek2 == null);
    {
        Dwa rysuj = new Dwa(10,10, new Random());
        watek2 = new Thread(rysuj);
        watek2.start();
    }
  }
  public void stop()
  {
   watek1.stop();
   watek2.stop();
   watek1 = null;
   watek2 = null;
  }

 public void update(Graphics g)
 { paint(g);  }

 public void run()
 {
   while (Thread.currentThread() == watek1 || Thread.currentThread() ==
watek2)
  {
     try {Thread.sleep(1000);} catch (InterruptedException e){}
     kolo(getGraphics());
     repaint();
   }
 }
 public void kolo(Graphics g)
 {
   g.setColor(Color.blue);
   g.drawLine(m_x, m_y, m_r.nextInt(), m_r.nextInt());
 }
}
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads