package test;
import java.util.concurrent.*;
import static net.mindview.util.Print.*;public class SimpleDaemons implements Runnable {
public void run() {
try {
while (true) {
TimeUnit.MILLISECONDS.sleep(100);
print(Thread.currentThread() + "" + this);
}
} catch(InterruptedException e) {
print("sleep() interrupted");
}
}
public static void main(String[] args) throws Exception {
for (int i = 0; i < 10; ++i) {
Thread daemon = new Thread(new SimpleDaemons());
daemon.setDaemon(true);
daemon.start();
}
print("All daemons started");
TimeUnit.MILLISECONDS.sleep(175);//这儿这个175改成190结果中线程数量就会为20个,但是没到190时
} //线程结果数量就是10个, 真搞不懂, 按我理解的程序运行方式只要数字不到200结果
//就都是10个的, 我理解是这样的, 在main这个非后台线程睡眠过程中, 后台线程
//先睡100ms, 然后运行print 显示结果, 如果在下一个100ms内main线程还没结束就继续print显示
//结果, 一直循环, 直到main线程结束.}
import java.util.concurrent.*;
import static net.mindview.util.Print.*;public class SimpleDaemons implements Runnable {
public void run() {
try {
while (true) {
TimeUnit.MILLISECONDS.sleep(100);
print(Thread.currentThread() + "" + this);
}
} catch(InterruptedException e) {
print("sleep() interrupted");
}
}
public static void main(String[] args) throws Exception {
for (int i = 0; i < 10; ++i) {
Thread daemon = new Thread(new SimpleDaemons());
daemon.setDaemon(true);
daemon.start();
}
print("All daemons started");
TimeUnit.MILLISECONDS.sleep(175);//这儿这个175改成190结果中线程数量就会为20个,但是没到190时
} //线程结果数量就是10个, 真搞不懂, 按我理解的程序运行方式只要数字不到200结果
//就都是10个的, 我理解是这样的, 在main这个非后台线程睡眠过程中, 后台线程
//先睡100ms, 然后运行print 显示结果, 如果在下一个100ms内main线程还没结束就继续print显示
//结果, 一直循环, 直到main线程结束.}
解决方案 »
- Map求助
- 服务器端Socket连接close后,客户端Socket.isClosed()为何还是false
- 在java中写程序算出给出的一组随机整数中哪些是质数
- java图片浏览内存释放问题
- 急!!!这个问题算法如何设计?
- java socket 如何实现客户端和服务器端不停地自由发送信息?
- 谁那有上传文件的JAVA源程序?
- Vj++中如何启动浏览器
- 会使用JBuilder4和jdk1.3的请进来
- 如何在Java类中初始化context-param -> listener -> filter -> servlet
- JAVA 内部类是否可以相互引用?
- (Java问题)请问链表中Node的内容怎么转成string
放在一个循环里用,
感觉有点不对哦?
1 print("All daemons started");
TimeUnit.MILLISECONDS.sleep(175);
这两句执行用时大于175,(我测试时,175时,用时196,185时用时202).
所以你看到这块休眠不到200ms,有20个线程了。
2 那些后台线程都是先于main执行了,所以在180ms 附近,可能出现多于、少于或等于20个线程的情况。楼主可以自己测试一下。