LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 835|回复: 8

java真的具有系统无关性吗?请看例子

[复制链接]
发表于 2005-1-26 10:04:51 | 显示全部楼层 |阅读模式
import java.lang.*;

public class ThreadTest
{
  public static void main(String args[])
  {
    MyThread first= new MyThread("first");
    first.setPriority(Thread.MIN_PRIORITY);
    first.start();
    MyThread second = new MyThread("second");
    second.setPriority(Thread.MAX_PRIORITY);
    second.start();
    MyThread third =new MyThread("third");
    third.setPriority(Thread.MAX_PRIORITY);
    third.start();
    second.resume();
  }
}
class MyThread extends Thread
{
  String name;
  MyThread(String name)
  {
    this.name=name;
  }
  public void run()
  {
    for(int i=0;i<3;i++)
    {
      System.out.println(name+" "+getPriority());
      if(name.equalsIgnoreCase("second")&&i==1)
      {
        this.suspend();
      }
      if(name.equalsIgnoreCase("first")&&i==1)
      {
        this.stop();
      }
    }
  }
}

这段代码在windows 2003中运行结果是:
second 10
second 10
third 10
third 10
third 10
second 10
first 1
first 1
但是在Linux中运行后却得到:
first 1
first 1
second 10
second 10
third 10
third 10
third 10
second 10

文件是同一个不会变,这样排除了录入上的错误。这样的结果到底是因为java有可能倚赖操作系统的运行机制不同而导致的?还望大虾们不吝赐教 ̄
发表于 2005-1-26 10:32:28 | 显示全部楼层
这是我第一次运行的结果
first 1
first 1
second 10
second 10
third 10
third 10
third 10
second 10
这是我第二次运行的结果
second 10
second 10
third 10
third 10
third 10
second 10
first 1
first 1

我是用同一台机器,说明的确跟系统无关
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-26 10:40:19 | 显示全部楼层
你觉得是什么原因造成的?
回复 支持 反对

使用道具 举报

发表于 2005-1-26 10:45:16 | 显示全部楼层
这个应该是线程造成的。没有对线程锁定,每个线程都独自运行,时间上有快有慢,这应该是正常的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-26 12:22:37 | 显示全部楼层
但是三个线程之间没有共享数据,用不着锁定吧?并且设置了优先级,没有道理优先级最低的反而第一个执行阿
回复 支持 反对

使用道具 举报

发表于 2005-1-26 17:05:52 | 显示全部楼层
你这个例子和标题是“风牛马不相及”。。。
关于线程,优先级,最好看一下操作系统相关的知识
回复 支持 反对

使用道具 举报

发表于 2005-1-26 17:09:32 | 显示全部楼层
我不知道 vm的设计,但觉得的操作系统线程,作业调度应该相似。。。
回复 支持 反对

使用道具 举报

发表于 2005-1-27 19:10:09 | 显示全部楼层
整体上来说win的线程模型更加的完善,在linux下面线程就是
伪进程。所以优先级在win上面体现的突出。java的很多讲线程
的书上都说明了这一点。
回复 支持 反对

使用道具 举报

发表于 2005-1-27 20:49:54 | 显示全部楼层
线程的前后顺序和你这个是否系统无关性根本就是2回事!
即使是在同个操作系统,执行多次后,结果也是完全不同!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表