关于 Thread 的问题 第一: activeCount()是怎么实现的?第二: 同上:线程是怎么结束的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 设一下变量threadCount来保存活动线程数目,创建新线程时先判断这个变量的值是否大于3就不要创建新线程.结束线程时把这个变量的值减1就可以了.最好不要用函数来判断,很难实现.以上是我的浅见. 把你的操作实现为一个线程类把count<=3作为它的静态成员在构造函数中限制count的数量或者把你的操作实现为一个类静态方法,同时要有一个静态数据成员(count)来记录该方法的调用情况在方法开始的时候++count;方法结束的时候--count;并在方法里判断count<=3,否则return在线程类里来调用这个静态方法 线程结束或挂起的时候,activeCount会自动减少 真正的程序太多了,贴了看起来也麻烦,写了一个测试的程序:import java.lang.*;public class test extends Thread { public static void main(String[] args) { new test().process(); } public void process() { int nChildCount = 0; for(;;) { int nActiveCount = Thread.currentThread().activeCount(); while(nActiveCount > 5) { try { System.out.println("sleep"); Thread.sleep(1000); } catch(Exception e) { e.printStackTrace(); } } System.out.println("child count = " + nChildCount++ + ", active count = " + nActiveCount); Thread thr = new Thread(this, "" + nChildCount); thr.start(); } } public void run() { try { Thread.sleep(10000); } catch(Exception e) {e.printStackTrace();} }}这个程序被改过很多次,我都忘了之前出问题时是哪个版本了,反正后来把他改成这样了就行了。帮我看看这个程序对不对,多谢。 我的java程序打成jar包后 在liunx后台运行,有时候无缘无故就自动结束了, log4j里面也没异常日志 java中如何利用其他的类来修改本类中的信息 请大虾帮帮偶这个新手啊!if结构 JAVA读写XML文件版本兼容问题 求教:如何创建类似jbuilder风格的窗格 一个棘手的java字符串"1110100101010010"的问题 问个字符串的处理问题...汗 怎样控制JPanel显示与否? 高手请指点,读文件为什末老报异常,谢谢! 帮忙看下这个错误提示 javadoc生成的文档为什么不全呢? 判断一个字符串是否包含另一个字符串用哪个类的哪个函数
创建新线程时先判断这个变量的值是否大于3就不要创建新线程.
结束线程时把这个变量的值减1就可以了.
最好不要用函数来判断,很难实现.
以上是我的浅见.
把count<=3作为它的静态成员
在构造函数中限制count的数量或者
把你的操作实现为一个类静态方法,同时要有一个静态数据成员(count)来记录该方法的调用情况
在方法开始的时候++count;方法结束的时候--count;
并在方法里判断count<=3,否则return
在线程类里来调用这个静态方法
public static void main(String[] args) {
new test().process();
}
public void process() {
int nChildCount = 0;
for(;;) {
int nActiveCount = Thread.currentThread().activeCount();
while(nActiveCount > 5) {
try {
System.out.println("sleep");
Thread.sleep(1000);
} catch(Exception e) {
e.printStackTrace();
}
}
System.out.println("child count = " + nChildCount++ + ", active count = " + nActiveCount);
Thread thr = new Thread(this, "" + nChildCount);
thr.start();
}
}
public void run() {
try {
Thread.sleep(10000);
} catch(Exception e) {e.printStackTrace();}
}
}这个程序被改过很多次,我都忘了之前出问题时是哪个版本了,反正后来把他改成这样了就行了。
帮我看看这个程序对不对,多谢。