使用线程和不使用线程有什么区别 请出示java示例
时间: 2023-12-03 22:02:48 浏览: 24
使用线程和不使用线程的主要区别在于程序的并行性和响应性。使用线程可以让程序同时执行多个任务,从而提高程序的效率和响应性。而不使用线程则只能按照顺序一个一个地执行任务,效率和响应性都会受到影响。
以下是使用线程和不使用线程的Java示例:
不使用线程的示例:
```java
public class NoThreadExample {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 依次执行任务1、任务2、任务3
task1();
task2();
task3();
long endTime = System.currentTimeMillis();
System.out.println("总用时:" + (endTime - startTime) + "ms");
}
private static void task1() {
// 模拟任务1
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务1完成");
}
private static void task2() {
// 模拟任务2
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务2完成");
}
private static void task3() {
// 模拟任务3
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务3完成");
}
}
```
使用线程的示例:
```java
public class ThreadExample {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 创建三个线程分别执行任务1、任务2、任务3
Thread t1 = new Thread(() -> task1());
Thread t2 = new Thread(() -> task2());
Thread t3 = new Thread(() -> task3());
t1.start();
t2.start();
t3.start();
// 等待三个线程都执行完毕
try {
t1.join();
t2.join();
t3.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("总用时:" + (endTime - startTime) + "ms");
}
private static void task1() {
// 模拟任务1
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务1完成");
}
private static void task2() {
// 模拟任务2
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务2完成");
}
private static void task3() {
// 模拟任务3
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务3完成");
}
}
```
可以看出,使用线程的示例中,三个任务是同时执行的,而不使用线程的示例中,三个任务是依次执行的。因此,使用线程可以提高程序的效率和响应性。