最近学习java,遇到很多问题;
例如,学习 thread 的时候突然想搞清楚 thread 到底是怎么实现的,就去查帮助,会发现很多问题,一下子也说不清楚,反正就是帮助很多东西 不能够解决! [size=12px]就是想知道java的一些东西到底是怎么实现的,有了看java 源代码的想法,但是不知道从什么地方开始看,随便看了下,觉得好像jdk的源代码就是在调用jdk本身的一些 class,interface,所以不知到从何开始看,希望能够得到朋友们的指点[/size]
例如,学习 thread 的时候突然想搞清楚 thread 到底是怎么实现的,就去查帮助,会发现很多问题,一下子也说不清楚,反正就是帮助很多东西 不能够解决! [size=12px]就是想知道java的一些东西到底是怎么实现的,有了看java 源代码的想法,但是不知道从什么地方开始看,随便看了下,觉得好像jdk的源代码就是在调用jdk本身的一些 class,interface,所以不知到从何开始看,希望能够得到朋友们的指点[/size]
谢谢建议!大家继续讨论!
在windows平台上就是用win32 api创建线程,网上也有相关的分析
贴一个出来看一下!/**
* @(#)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){}
}
}
}
http://www.jb51.net/softjc/926.html