类A实现Runnable接口
ArrayList<Thread> threadPool = new ArrayList<Thread>();
A a = new A();
threadPool.add(new Thread(a));
现在要从threadPool中将a对应的线程移除,应该如何操作?
按照你的逻辑,你用ArrayList作为一个线程池,实际上这是一个集合,如果想移除,可以这样:
threadPool.remove(new Thread(a));但是实际上,java中的concurrent包下的Executors接口,使用自带的api:
ExecutorService threadpool=Executors.newCachedThreadPool();追问我并没有使用java中提供的线程池类接口,而是自己定义的threadPool,可以认为仅仅是ArrayList(),这个如果要移除该如何操作那?
追答那么你就可以调用Arraylist的方法进行移除,remove(int index),根据位置移除,或者remove(object o),根据对象移除,或者clear(),清除所有线程
追问现在的困难就是无法获得这个对象,添加的时候是通过threadPool.add(new Thread(a));移除的时候,我现在只能获得a,是否有方法通过a获取相应的thread那?
追答和a没有关系啊,a只是你为了实现Runnable接口,然后通过Thread()构造的一个线程,你只要操作构造号的这个线程就行了。a不用考虑,看是不是这样的:
Thread threada=new Thread(a);
threadPool.add(threada);
threadPool.remove(threada);