class t implements Runnable
先定义一个实现了runnable接口的类Thread t1 = new Thread(new t());
然后定义一个thread问题:
1、如果我有多个thread,那么是不是把thread放到一个arraylist(或者别的什么)里面进行管理?根据thread的id或者位置来决定停止哪个thread?比如根据用户的输入,决定停止哪个Thread。或者就用ThreadGroup?
2、如果我在runnable的类当中设置了一个标志位,如果为真,那么就停止这个thread(比如停止run方法当中的死循环等等),可是,我从Thread类无法获得创建Thread类的Runnable类啊。
public Thread(Runnable target)===》从Thread类,得不到target,因此,如果我把thread管起来,那么就没办法调用target当中的设置标志位的方法。
先定义一个实现了runnable接口的类Thread t1 = new Thread(new t());
然后定义一个thread问题:
1、如果我有多个thread,那么是不是把thread放到一个arraylist(或者别的什么)里面进行管理?根据thread的id或者位置来决定停止哪个thread?比如根据用户的输入,决定停止哪个Thread。或者就用ThreadGroup?
2、如果我在runnable的类当中设置了一个标志位,如果为真,那么就停止这个thread(比如停止run方法当中的死循环等等),可是,我从Thread类无法获得创建Thread类的Runnable类啊。
public Thread(Runnable target)===》从Thread类,得不到target,因此,如果我把thread管起来,那么就没办法调用target当中的设置标志位的方法。
如果有的话就好办了,没得话,这个问题不好解决...
这样就可以判断当前有哪些Thread在运行.
还可以把所有的Thread都放到另一个Class中(例如叫Luancher),由这个Class判定是否运行新的Thread,或者中断已经运行的Thread.
Class clazz = target.getClass();
这样可以吗
或许你可以不用Runnable,而直接继承Thread,就可以,如果实在要用Runnable接口的话(当然普通得这个方法比较好),那么你是不是可以再上面得容器里存放得不是Thread对象。而是Runnable对象呢,我觉得应该不影响,至于Thread得ID,可以再生成Thread对象后就可以知道了,然后再将Runnable对象放入容器
我在runnable的类当中设置了一个标志位,如果为真,那么就停止这个thread
这一点,与你的:)===》从Thread类,得不到target,因此,如果我把thread管起来,那么就没办法调用target当中的设置标志位的方法。
是完全无关的啊
你照样:在runnable的类当中设置了一个标志位,如果为真,则:runnable的类中的run()代码(class t implements Runnable )就停止.
这样当Thread t1 = new Thread(new t()); 时,它运行的是你的runnable的类中的run(),因此:如果为真,那么这个thread自然就停止了.这个根本就不需要public Thread(Runnable target)===》从Thread类,想得到target啊. 两者之间是没有关系的.
你最终目的 不就是要停止线程嘛 用interrupt()这个方法就可以了
用setName()来标实线程.