学习多线程之后,我们会发现线程占用资源的概率不是确定的,那怎样去解决资源分配问题呢。下面举一个简单的例子。
public class PrintNum implements Runnable{
int num =1; //全局变量
@Override
public void run() {
while(true){
synchronized (this) {//加锁,传入当前对象(PrintNum类)
if (num <= 100) {
//唤醒线程
notify();
try {
Thread.currentThread().sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() +
": " + num);
num++;
}
else {
break;
}
try {
wait();//挂起线程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
PrintNum p=new PrintNum();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
t1.setName("线程1");
t2.setName("线程2");
t1.start();
t2.start();
}
}
当我们需要轮番打印1-100的