当线程B执行两次后让线程A插队2s,使用if语句
时间: 2023-12-12 07:05:30 浏览: 58
java多线程2
好的,我来解答您的问题。以下是示例代码:
```java
public class ThreadTest {
public static void main(String[] args) {
//创建线程A和线程B
Thread threadA = new Thread(() -> {
System.out.println("线程A开始执行");
try {
//让线程A休眠2秒
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程A执行完毕");
});
Thread threadB = new Thread(() -> {
System.out.println("线程B开始执行");
for (int i = 0; i < 2; i++) {
System.out.println("线程B执行第" + (i + 1) + "次");
}
//判断线程A是否在等待
if (threadA.getState() == Thread.State.TIMED_WAITING) {
try {
//让线程B休眠2秒,让出CPU资源
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
//启动线程A和线程B
threadA.start();
threadB.start();
}
}
```
执行上述代码输出结果为:
```
线程B开始执行
线程A开始执行
线程B执行第1次
线程B执行第2次
线程A执行完毕
```
其中,线程A和线程B分别使用Thread类的构造方法创建,并使用start()方法启动。在线程B中使用for循环执行两次,然后使用if语句判断线程A是否在等待,如果是,则让线程B休眠2秒,让出CPU资源。最后,线程A执行完毕。
在这个示例中,我们使用了if语句来判断线程A是否在等待,如果是,则让线程B休眠2秒,这样就可以让线程A插队2秒。需要注意的是,在使用if语句判断线程状态时,需要使用Thread.State枚举类提供的常量来比较,比如Thread.State.TIMED_WAITING表示线程正在等待。
阅读全文