- package threadTest;
- public class ThreadDemo {
- public static void main(String[] args) {
-
- MaiPiao t = new MaiPiao();
- Thread first = new Thread(t, "one");
- Thread secound = new Thread(t, "two");
- first.start();
- secound.start();
- }
- }
- class MaiPiao implements Runnable{
- private int piao = 100;
- public void run() {
- synchronized(new Object()){
- while(piao>0){
- System.out.println(Thread.currentThread().getName()+" is running"+piao--);
- }
- }
- }
- }
复制代码
此时两个线程用的不是同一把锁,因为每个线程运行 new object时,都会创建一个对象,所以每个线程都有自己的锁
此时纵使换成同一把锁,依然会出现错误,因为while循环在同步代码块之内,所以当一个线程进入同步代码块之后,就不会再出来...
以此警醒自己,考前复习 |
|