Q.1我试图同时运行两个线程,但是这里是按顺序打印值。例如,它打印0然后再次打印0然后再打印1.如果线程同时运行,则不应打印为0 0然后打印1。
Q.2它输出如10,11然后0,1,0,1。当它首先打印10和11时。即使程序控制首先转到t1.start()
和t2.start()
,这是否意味着线程t1和t2尚未启动。
public class Main implements Runnable
{
int x;
public void run()
{
for(int i = 0; i < 2; i++)
{
System.out.println(x++);
}
}
public static void main(String[] args)
{
Thread t1 = new Thread(new Main());
Thread t2 = new Thread(new Main());
t1.start();
t2.start();
int y = 10;
for(int i = 0; i < 2; i++)
{
System.out.println(y++);
}
}
}
答案 0 :(得分:3)
线程使用的x
变量与x
方法中打印的main
变量不同。
由于在线程中执行的代码太短,第一个线程将在第二个线程启动时完成
此外,通过这个简单的示例,您的代码也会受到输出缓冲区的影响。
答案 1 :(得分:0)
如果要查看并发操作,将sleep()方法放在run方法的某个位置应该会有所帮助。