最近学习java,遇到很多问题;
   例如,学习 thread 的时候突然想搞清楚 thread 到底是怎么实现的,就去查帮助,会发现很多问题,一下子也说不清楚,反正就是帮助很多东西 不能够解决!   [size=12px]就是想知道java的一些东西到底是怎么实现的,有了看java 源代码的想法,但是不知道从什么地方开始看,随便看了下,觉得好像jdk的源代码就是在调用jdk本身的一些 class,interface,所以不知到从何开始看,希望能够得到朋友们的指点[/size]
  

解决方案 »

  1.   

    用到了再看,你又不是jdk的developer,没有必要完全搞清楚,先从例子或者别人的代码学习比较好。
      

  2.   

    需要的时候再去看,JDK这么多的类,不太可能的。研究源码是非常好的学习方法,学习编码风格、思路。
      

  3.   

    不是的,也许是我看的版本不好,应该看最早版本的,看到那些jdk里面的代码 依旧是调用jdk?
    谢谢建议!大家继续讨论!
      

  4.   

    具体怎么实现的并不在 Java 类库中,而是调用本地方法的,而这些本地方法与 CPU 的任务调度有关。
      

  5.   

    嗯 。要看Thread具体原理的话要去看jvm的代码了
    在windows平台上就是用win32 api创建线程,网上也有相关的分析
      

  6.   

    学习线程的时候看了一下thinking in java 感觉里边的例子很经典!
    贴一个出来看一下!/**
     * @(#)Counter4.java
     *
     *
     * @author 
     * @version 1.00 2008/10/25
     */import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;public class Counter4 extends Applet 
    {
    private Button start = new Button("Start");
    private boolean started = false;
    private Ticker[] s;
    private boolean isApplet = true;
    private int size;
    public void init() 
    {
    // Get parameter "size" from Web page:
    if(isApplet)
    size =Integer.parseInt(getParameter("size"));

    s = new Ticker[size];

    for(int i = 0; i < s.length; i++)
    s[i] = new Ticker(this);
    start.addActionListener(new StartL());

    add(start);
    }
    class StartL implements ActionListener 
    {
    public void actionPerformed(ActionEvent e) 
    {
    if(!started) 
    {
    started = true;
    for(int i = 0; i < s.length; i++)
    s[i].start();
    }
    }
    }
    public static void main(String[] args) 
    {
    Counter4 applet = new Counter4();
    // This isn't an applet, so set the flag and
    // produce the parameter values from args:
    applet.isApplet = false;
    applet.size =(args.length == 0 ? 5 :Integer.parseInt(args[0]));
    Frame aFrame = new Frame("Counter4");

    aFrame.addWindowListener(new WindowAdapter() 
    {
    public void windowClosing(WindowEvent e) 
    {
    System.exit(0);
    }
    });

    aFrame.add(applet, BorderLayout.CENTER);
    aFrame.setSize(200, applet.size * 50);
    applet.init();
    applet.start();
    aFrame.setVisible(true);
    }
    }class Ticker extends Thread 
    {
    private Button b = new Button("Toggle");
    private TextField t = new TextField(10);
    private int count = 0;
    private boolean runFlag = true;
    public Ticker(Container c) 
    {
    b.addActionListener(new ToggleL());
    Panel p = new Panel();
    p.add(t);
    p.add(b);
    c.add(p);
    }
    class ToggleL implements ActionListener 
    {
    public void actionPerformed(ActionEvent e) 
    {
    runFlag = !runFlag;
    }
    }
    public void run() 
    {
    while (true) 
    {
    if(runFlag)
    t.setText(Integer.toString(count++));
    try 
    {
    sleep(100);

    catch (InterruptedException e){}
    }
    }
    }
      

  7.   

    这里有jdk的  中文API 帮助你具体了解CLASS的使用!!!
     http://www.jb51.net/softjc/926.html