sleep() unterbrechen...



  • Guten Abend,
    ich komme einfach nicht dahinter wie ich eine
    Sleep() funktion unterbrechen kann....

    public static void read()throws Exception{
    
            BufferedReader in=new BufferedReader( new FileReader("time.txt") );
    
            String s_value = in.readLine();
            int value = Integer.parseInt( s_value );
    
            System.out.println( "sleeping for - " + value + "min zZzZzZzZz..." );
    
            value *= 60000;
    
            try {
            Thread.sleep( value );
            }
            catch(InterruptedException e) {
            }
    
        }
    

    Wie kann ich denn einen 2. Thread gleichzeitig starten, der dann eine Interrupt wirft? Wo müsste ich diesen platzieren?

    Wäre nett wenn mir jemand weiter Helfen könnte.
    Danke, schon mal 🙂



  • eben in diesem anderen thread oO
    der braucht allerdings den thread den er interrupten soll
    bekommst du über Thread.currentThread(), und diesen dann einfach .interrupt()

    {
        new Thread(new Runnable()
        {
          private Thread thread;
    
          public Runnable init(Thread thread)
          {
            this.thread = thread;
            return this;
          }
    
          @Override
          public void run()
          {
            try
            {
              Thread.sleep(1000);
              this.thread.interrupt();
            }
            catch (InterruptedException e)
            {
              e.printStackTrace();
            }
          }
        }.init(Thread.currentThread())).start();
    
        System.out.println("sleeping:");
        try
        {
          Thread.sleep(5000);
          System.out.println("awake =)");
        }
        catch (InterruptedException e)
        {
          e.printStackTrace();
          System.out.println("interrupted! x(");
        }
      }
    

    jetzt zwar gekonnt hässlich aber im prinzip wie du wolltest: 2. thread starten, welcher seinerseits eine weile wartet oder auf was auch immer wartet und dann den parentthread unterbricht. bei der erstellung des 2. threads übergibt der parent sich selbst gleich mit damit der childthread diesen dann per interrupt() unterbrechen kann.



  • Vielen Dank funktioniert super^^

    Allerdings hätte ich noch eine Frage,
    für was ist denn diese @Override Annotation?



  • Soll man bei allen überschriebenen Methoden anfügen, damit ist auch gleich ersichtlich, dass hier überschrieben wurde.

    Edit:
    http://download.oracle.com/javase/7/docs/api/java/lang/Override.html

    MfG SideWinder


Anmelden zum Antworten