Java线程行为
我在互联网上看到了以下示例:Java线程行为,java,Java,我在互联网上看到了以下示例: public class TwoThreads { public static class Thread1 extends Thread { public void run() { System.out.println("A"); System.out.println("B"); } } public static class Thread2 extends Thread { public void run()
public class TwoThreads {
public static class Thread1 extends Thread {
public void run() {
System.out.println("A");
System.out.println("B");
}
}
public static class Thread2 extends Thread {
public void run() {
System.out.println("1");
System.out.println("2");
}
}
public static void main(String[] args) {
new Thread1().start();
new Thread2().start();
}
}
我的问题是:
3) 一个有两个内核的CPU只能同时运行两个线程,但大多数线程的大部分时间并不是实际使用CPU,而是等待I/O或用户交互之类的东西。因此,拥有两个以上的线程可以获得很多好处(只有两个线程可以并发计算,但数百个线程可以并发等待)。看看node.js,这是一种最近流行的多线程编程的替代方案,它可以在只有一个执行线程的情况下实现并发请求的高吞吐量。回答您的1/2问题: 虽然线程运行并行代码,但线程的run方法始终是按顺序执行的
回答你的3个问题,你可以最好地调整你的答案。应用程序如果处理器数量=线程数量,但这不是一个完整的事实,因为如果线程正在等待某个阻塞操作,则会导致性能未优化,因为在此期间,另一个线程可能会运行。回答您的1/2问题: 虽然线程运行并行代码,但线程的run方法始终是按顺序执行的 回答你的3个问题,你可以最好地调整你的答案。应用程序如果处理器数量=线程数量,但这不是一个完全的事实,因为如果线程正在等待某个阻塞操作,那么它将导致未优化的性能,因为在此期间另一个线程可能会运行
volatile
关键字一起使用的变量。在给定的机器上运行此程序很可能总是产生相同的结果。如#1中所述,您将受调度程序的支配。如果调度程序总是以相同的方式运行,您将始终得到相同的结果。缓存与此无关volatile
关键字一起使用的变量。在给定的机器上运行此程序很可能总是产生相同的结果。如#1中所述,您将受调度程序的支配。如果调度程序总是以相同的方式运行,您将始终得到相同的结果。缓存与此无关