I need:
1. There are hot threads (they are always present, their number is known beforehand) and free threads (interrupts when a timeout expires).

I implement.
1. Class HotThread implements Runnable.
2. Class FreeThread extends HotThread (added a timer). 
3. Class ThreadPool as a planner. Has methods: addFreeThread(), cancelTask(int id).

My addFreeThread looks like this:

```
public void addFreeThread() {
        FreeThread ft = new FreeThread(timeout);
        Thread t = new Thread(ft);                
        ft.startTimer(t);
    }

```

Now I start to implement cancelTask: 

```
public void cancelTask(int id) {
        ... // get Thread threadToCancel from the ThreadPool.
        threadToCancel.interrupt();        

    }

```

Than looks great. But the timer is still running in a separate thread. Timer is started in an instance of FreeThread class which I seem to have lost. I knew it when I started a free thread. But now I don't know where to find it.

That implementing of Runnable confuses me a lot. Maybe I can extract ft from the thread? Seems impossible. Shall I keep it in a ThreadPool. Looks troublesome as I am already keeping HashMap with the thread and its id there. I wouldn't like keeping another HashMap for keeping ids and their fts.

Could you give me a hint?