当前位置:编程学习 > JAVA >>

求高手点拨一个:“Java线程类”的问题.

求高手点拨:
    一个子线程中,应该不能再架子线程了吧..?
    怎么下面的代码:
    
public void run(){
new Thread(new Runnable() {
public void run() {
while (true) {
try {
System.out.println(ssoo1.read(so3) + "----------------------");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}).start();
    System.out.println("CJCO999CJCO!!!!!!!!!成功!!");

    中,有一个子线程在这个线程类中启动,却还能够运行...?
    就我所知:“一个线程”“在Java里,就是一个最小的原子级单位了”,“不能够再次向里面添加一个线程了”...为什么这里的代码,出现了“线程内部嵌套一个线程”的代码结构...? Java并发 Java子线程 Java线程嵌套线程 Java SE --------------------编程问答-------------------- 我的理解是,一个线程开启另一个线程,并列关系 --------------------编程问答--------------------
引用 楼主 u012945210 的回复:
求高手点拨:
    一个子线程中,应该不能再架子线程了吧..?
    怎么下面的代码:
    
public void run(){
new Thread(new Runnable() {
public void run() {
while (true) {
try {
System.out.println(ssoo1.read(so3) + "----------------------");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}).start();
    System.out.println("CJCO999CJCO!!!!!!!!!成功!!");

    中,有一个子线程在这个线程类中启动,却还能够运行...?
    就我所知:“一个线程”“在Java里,就是一个最小的原子级单位了”,“不能够再次向里面添加一个线程了”...为什么这里的代码,出现了“线程内部嵌套一个线程”的代码结构...?


呵呵,你应该看看《java并发编程实战》。更多的了解一下线程的知识。
线程内部是可以开启任意多个子线程的。
最常见的就是public static void main(String[] args),这个函数你不陌生吧?这就是咱们java程序的入口。你知道么?他就是被Java的主线程调用的。你可以在main里面写任意多的线程(如果操作系统允许,一般现在的操作系统可以运行你创建几十万个线程,是没有问题的,也就是允许的慢一些)。在Jdk1.7中新引进的Fork/Join,就是在运行程序的过程中,把一个大的任务分解成N个子任务来并行运行。这些子任务呢,还可以在细分为更小的子任务。这些子任务都是可以并行的线程在运行。
结论:可以在线程中无限的嵌入更多的子线程。 --------------------编程问答-------------------- 如果操作系统允许,一般现在的操作系统可以允许你创建几十万个线程,是没有问题的,也就是运行的慢一些。

呵呵,上面写了错字,这里更正一下。 --------------------编程问答-------------------- 线程是可以启动子线程的啊,楼主的理解有些问题。 --------------------编程问答-------------------- 我来告诉你答案。“在Java里,就是一个最小的原子级单位了”,“不能够再次向里面添加一个线程了”是说运行之后是什么结构,而不是说线程是从哪里产生的。就像儿子还可以生儿子,但是孙子是独立的一个人。源代码与运行时的关系问题。 --------------------编程问答-------------------- 可以多看看《java并发编程实战》英文版叫《Java Concurrency in Practice》 --------------------编程问答--------------------
main函数也是一个线程,如果按照你的理论(子线程中不能再启动线程),那么线程就没意义了。就一个main函数线程。

所以结论:线程中可以无限开启新的线程。 --------------------编程问答-------------------- 线程最小的原子级单位,,java的线程是映射到操作系统的线程上的,编译器编译期间会把你创建的线程跟系统线程对应上,去执行任务,这里和你这么写是没什么联系的,像2楼说的,你可以把你外面那个线程看做是main方法,main 方法就是主线程,然后下面可以创建任意线程 --------------------编程问答-------------------- main本身就是个线程。 线程内当然也就可以有自己的子线程,递归下去,直到内存满了。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,