上次老师讲了一个java线程的问题,蛮有趣的,和大家啊分享一下……
代码如下:class ThreadA extends Thread
{
private ThreadAdd threadAdd;
ThreadA(ThreadAdd t)
{
threadAdd = t;
}
public void run()
{
for (int i=1; i<= 10; i++) {
threadAdd.add(i);
System.out.println("threadA:" + i);
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class ThreadB extends Thread
{
private ThreadAdd threadAdd;
ThreadB(ThreadAdd t)
{
threadAdd = t;
}
public void run()
{
for (int i=11; i<= 20; i++) {
threadAdd.add(i);
System.out.println("threadB:" + i);
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class ThreadAdd {
private int sum = 0;
public void add(int num)
{
sum += num;
}
public void print()
{
System.out.println("sum = " + sum);
}
public static void main(String[] args) {
ThreadAdd threadAdd = new ThreadAdd();
ThreadA threadA = new ThreadA(threadAdd);
ThreadB threadB = new ThreadB(threadAdd);
threadA.start();
threadB.start();
while(threadA.isAlive() || threadB.isAlive())
;
threadAdd.print();
}
}
//结果如下:
线程1:0
线程2:5
线程1:1
线程2:6
线程2:7
线程1:2
线程2:8
线程1:3
线程2:9
线程1:4
sum=45