Ubuntu不支持java多线程????

C、C++和Java语言
回复
zhuguangxiang
帖子: 52
注册时间: 2006-03-29 16:55
送出感谢: 0
接收感谢: 0

Ubuntu不支持java多线程????

#1

帖子 zhuguangxiang » 2007-03-05 16:15

Ubuntu不支持java多线程????
今天试了一下java的多线程,发现ubuntu下好像不支持。晕了!!!
flyer_mr
帖子: 3
注册时间: 2007-03-01 14:31
送出感谢: 0
接收感谢: 0

#2

帖子 flyer_mr » 2007-03-06 15:53

linux下没有线程的概念吧?
都是以进程的形式表示吧,在linux下是进程
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33
送出感谢: 0
接收感谢: 0

#3

帖子 猛将兄 » 2007-03-07 13:27

瞎扯,不知道你怎么测试的,我用java写高性能服务器的(不是J2EE),没有多线程我还搞什么
头像
ggjjzhzz
帖子: 137
注册时间: 2006-12-21 9:46
送出感谢: 0
接收感谢: 0

#4

帖子 ggjjzhzz » 2007-03-08 2:42

呵呵,如果不支持多线程,SUN公司一定会起诉Ubuntu开发者的。没有多线程,J2EE还能干什么?
zhuguangxiang
帖子: 52
注册时间: 2006-03-29 16:55
送出感谢: 0
接收感谢: 0

#5

帖子 zhuguangxiang » 2007-03-08 19:08

理论上当然支持多线程了。
但是我的机器上,没有看出来。呵呵。
我的cup是pentium -m 华硕笔记本。
zhuguangxiang
帖子: 52
注册时间: 2006-03-29 16:55
送出感谢: 0
接收感谢: 0

#6

帖子 zhuguangxiang » 2007-03-08 19:14

比如:最简单的测试:
public class ThreadTest {
public static void main(String[] arg) {

Thread t = new Thread(new MyThread());

t.start();

for(int i = 0; i<100;i++)
System.out.println("Main thread :" +i);


}

}

class MyThread implements Runnable{

public void run() {

for(int i = 0; i<100;i++)
System.out.println("MyThread:" +i);

}

}
打印结果是:
Main Thread 0
......
Main Threa 99


MyThread 0
......
MyThread 99
Sliphades
帖子: 18
注册时间: 2007-02-03 6:25
送出感谢: 0
接收感谢: 0
联系:

#7

帖子 Sliphades » 2007-03-13 20:55

支持的!原因是JVM的问题,在不同平台上表现效果不同!
你可以这样~就您哪个例子
把 for(int i = 0; i<100;i++)
100-->1000
就可以看出!两个线程还是会交换出现的~

代码: 全选

Main thread :996
Main thread :997
Main thread :998
Main thread :999
MyThread:739
MyThread:740
MyThread:741
MyThread:742
MyThread:743


前些天自己为了定时关机,自己了个定时器。就是用多线程的!
附件
4.png
Mysoftware
4.png (8.94 KiB) 查看 1518 次
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33
送出感谢: 0
接收感谢: 0

#8

帖子 猛将兄 » 2007-03-15 17:45

zhuguangxiang 写了:比如:最简单的测试:
public class ThreadTest {
public static void main(String[] arg) {

Thread t = new Thread(new MyThread());

t.start();

for(int i = 0; i<100;i++)
System.out.println("Main thread :" +i);


}

}

class MyThread implements Runnable{

public void run() {

for(int i = 0; i<100;i++)
System.out.println("MyThread:" +i);

}

}
打印结果是:
Main Thread 0
......
Main Threa 99


MyThread 0
......
MyThread 99


这个就是相当地搞笑了,两个线程测试多线程?怎么着你也弄100个线程
从这一点看出,实际上是主线程运行过快导致的。context switch所需要的间隔还没有到主线程就done了
你弄上1000个线程试试看
另外,你这么测试,根本没搞清楚线程的意思,你知道线程和进程的区别,线程的N种实现和Sun对线程的实现么?
如果你知道这些,你就不会写这个程序来测试了
另外,你的Swing能运行么?一个Swing起来,就是一堆线程在跑,建议仔细研究Swing的代码
回复

回到 “C/C++/Java”