class Anim extends JFrame implements Runnable{
Image[] img=new Image[2];
int i=0;
Thread thread;
Anim(){
img[0]=new ImageIcon("d:\\Animator\\images\\Beans\\T1.gif").getImage();
img[1]=new ImageIcon("d:\\Animator\\images\\Beans\\T10.gif").getImage();
thread=new Thread(this);
thread.start(); this.pack();
this.setVisible(true);
}
public void paint(Graphics g){
System.out.println("The running thread:" + Thread.currentThread());
super.paint(g);
g.drawImage(img[(i++)%2],10,10,this);
try{
//if(Thread.currentThread()==thread)
thread.sleep(1000);//******
}catch(Exception e){
e.printStackTrace();
}
repaint();
}
public void run(){
System.out.println("The running thread:" + Thread.currentThread());
repaint();
}
public static void main(String[] args){
new Anim();
}
}
//为什么方法run中显示的当前线程跟paint()的当前线程不同,他们两个都在同一个类下的?
//高手,帮帮忙,要多少分都可以给
Image[] img=new Image[2];
int i=0;
Thread thread;
Anim(){
img[0]=new ImageIcon("d:\\Animator\\images\\Beans\\T1.gif").getImage();
img[1]=new ImageIcon("d:\\Animator\\images\\Beans\\T10.gif").getImage();
thread=new Thread(this);
thread.start(); this.pack();
this.setVisible(true);
}
public void paint(Graphics g){
System.out.println("The running thread:" + Thread.currentThread());
super.paint(g);
g.drawImage(img[(i++)%2],10,10,this);
try{
//if(Thread.currentThread()==thread)
thread.sleep(1000);//******
}catch(Exception e){
e.printStackTrace();
}
repaint();
}
public void run(){
System.out.println("The running thread:" + Thread.currentThread());
repaint();
}
public static void main(String[] args){
new Anim();
}
}
//为什么方法run中显示的当前线程跟paint()的当前线程不同,他们两个都在同一个类下的?
//高手,帮帮忙,要多少分都可以给
paint方法中和run方法的执行根本就不在一个线程中!run()方法是你自己new的Thread
而paint()方法的调用是java.awt.EventDispatchThread线程。谁也没有向你保证同一类下的方法一定是在同一线程下被调用。
那么同一类下的不同方法又应该如何归属于哪些进程呢
<<
public class TestThread extends TestCase {
public TestThread(String name) {super(name);}
private final Map results = new HashMap(); public void m1(String name) {results.put("m1", name);}
public void m2(String name) {results.put("m2", name);} public void testThread() {
Thread t1 = new Thread(new InnerTestThread(1), "t1");
Thread t2 = new Thread(new InnerTestThread(2), "t2");
t1.start();
t2.start();
try{Thread.sleep(1000);}catch(InterruptedException ex){} assertEquals(2, results.size());
assertTrue(results.containsKey("m1"));
assertTrue(results.containsKey("m2"));
assertEquals("t1", results.get("m1"));
assertEquals("t2", results.get("m2"));
} private class InnerTestThread implements Runnable {
private final int c;
InnerTestThread(int c) {
this.c=c;
}
public void run() {
String name= Thread.currentThread().getName();
if(c==1) {m1(name);}
else if(c==2) {m2(name);}
else return;
}
}
}
>>
高手,帮帮忙,TestCase类没给出啊
JAVA的单元测试工具,现在最新版本是3.8.1。在CLASSPATH中加入junit.jar
如果要在命令行运行刚才给你的代码,这样:
+-------------------------------------------------------------------+
| java -classpath PATH/junit.jar junit.testui.TestRunner TestThread |
+-------------------------------------------------------------------+
其实你的知识还是要靠你自己去学习的。而最新的东西确实又往往都是E文的。
小小分数,以表敬意!
Thanks xiaohaiz