使用两个线程循环打印出1~100
创建一个Num类;
public class Num {
int i=0;
boolean falg=false;
}
【使用两个线程循环打印出1~100】创建一个TestThread类:
需要注意,在A和B需要使用有参构造,使用同一个num,使得线程同步;
在wait()和notify()时,需要在前面加上num;不然会报程序运行异常。
public class TestThread {
public static void main(String[] args) {
Num num=new Num();
Thread t1=new Thread(new A(num));
Thread t2=new Thread(new B(num));
t1.start();
t2.start();
}}
class B implements Runnable{
private Num num;
B(Num num){
this.num=num;
}
@Override
public void run() {
while(num.i<99){
synchronized(num){if(!num.falg){
try {
num.wait();
} catch (InterruptedException e) {}
}
num.i++;
num.falg=false;
System.out.println(num.i);
num.notify();
}
} }
}
class A implements Runnable{
private Num num;
public A(Num num) {
this.num=num;
}
@Override
public void run() {
while(num.i<99){
synchronized(num){
if(num.falg){
try {
num.wait();
} catch (InterruptedException e) {}
}
num.i++;
num.falg=true;
System.out.println(num.i);
num.notify();
}
}
}
}
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 刘婵为何不娶关羽的女儿为妻子,而为何要娶张飞的两个女儿