这两段代码代码二是因为成员变量i同一个对象共享一份才执行50次可是代码一也是一个对象两条线程它也有一个成员变量privateExampleexample;为什么不是共享这一份不执行50次而执行了100...
这两段代码代码二是因为成员变量i 同一个对象共享一份才执行50次
可是代码一也是一个对象两条线程
它也有一个成员变量
private Example example;
为什么不是共享这一份
不执行50 次而执行了100次
代码一:
package com.t.thread;
public class ThreadTest4
{
public static void main(String[] args)
{
Example example = new Example();
Thread t1 = new TheThread(example);
Thread t2 = new TheThread(example);
t1.start();
t2.start();
}
}
class Example
{
public void execute()
{
for(int i = 0; i < 50; i++)
{
System.out.println("hello: " + i);
}
}
}
class TheThread extends Thread
{
private Example example;
public TheThread(Example example)
{
this.example = example;
}
@Override
public void run()
{
this.example.execute();
}
}
代码二:
package com.tt.thread;
public class ThreadTest3
{
public static void main(String[] args)
{
Runnable r = new HelloThread();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
class HelloThread implements Runnable
{
int i;
@Override
public void run()
{
while(true)
{
System.out.println("number: " + this.i++);
try
{
Thread.sleep((long)(Math.random() * 1000));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
if(50 == this.i)
{
break;
}
}
}
}
展开