为什么线程是顺序执行的?
Why threads are executing sequentially?
Q.1 我试图同时 运行 两个线程,但这里它是按顺序打印值。例如,它正在打印 0 然后 1 再 0 然后 1。如果线程并发 运行ning 那么它不应该像 0 0 然后 1 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++);
}
}
}
Threads 使用的 x
变量与 main
方法中打印的 x
变量不同。
由于线程中执行的代码非常短,第一个线程将在第二个线程启动时完成
对于这个简单的示例,您的代码也会受到输出缓冲区的影响。
如果您想查看并发操作,将 sleep() 方法放在 运行 方法中的某处应该会有所帮助。
Q.1 我试图同时 运行 两个线程,但这里它是按顺序打印值。例如,它正在打印 0 然后 1 再 0 然后 1。如果线程并发 运行ning 那么它不应该像 0 0 然后 1 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++);
}
}
}
Threads 使用的 x
变量与 main
方法中打印的 x
变量不同。
由于线程中执行的代码非常短,第一个线程将在第二个线程启动时完成
对于这个简单的示例,您的代码也会受到输出缓冲区的影响。
如果您想查看并发操作,将 sleep() 方法放在 运行 方法中的某处应该会有所帮助。