Solved

Threads in vector

Posted on 2002-05-20
4
280 Views
Last Modified: 2013-12-14
I have 3 classes.

//Task.class as follow
import java.util.*;
import java.io.*;
import java.text.*;

public class Task extends Thread {
     boolean live = true;
     long sleepInterval;
     int cc = 0;
     public static Task Instance;
     public Task() {
          Instance = this;
          sleepInterval = 5000;
          start();
     }
     
     public void run() {
     
          while (live) {
               try {
                    sleep(sleepInterval);
               } catch (Exception e) {
                    System.out.println("Interrupted sleep:loadsubmit " + e);
                    }
          }
     }

     public void setSleepInterval()
     {
          this.interrupt();
          sleepInterval = 10000;
     }

     public void printText() {
          System.out.println("thread is alive " + this.isAlive());
     }
}

//END

2. UpdateTask.class will extends Thread and call Task.Instance.setSleepInterval to update the sleepInterval for specific Task.
2. Main.class contain a vector to add a numbers of Task.class.
My answer is how can i refer UpdateTask to the specific Task.Instance because every Task.class has the same Instance name (Task).

Thanks alot.

0
Comment
Question by:chencc77
  • 2
4 Comments
 
LVL 9

Expert Comment

by:Venci75
ID: 7021320
...
private static Vector instances = new Vector();
public Task() {
  instances.addElement(this);
  sleepInterval = 5000;
  start();
}
public static Task getInstance(int i) {
  return (Task) instances.get(i);
}
...
   
now you can use :
Task.getInstance(2).setSleepInterval();
0
 

Author Comment

by:chencc77
ID: 7022851
Thanks Venci75, i am trying on it before close this question. Thanks again for ur help.
0
 
LVL 92

Accepted Solution

by:
objects earned 100 total points
ID: 7022972
The only reason to have a global reference to your Threads is if you require all classes to have access to them. If you only require access from UpdateTask then simply pass your vector of Task instances to the UpdateTask ctor.

Vector threadList = new Vector(100);
for (int i=0; i<100; i++)
{
 Thread t = new Thread1();
 threadList.add(t);
}

UpdateTask updater = new UpdateTask(threadList);
0
 
LVL 92

Expert Comment

by:objects
ID: 7074242
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
The line on IDE 4 71
servlet doXXX methods 3 38
factorial example 4 35
javap not working 8 39
Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now