zoukankan      html  css  js  c++  java
  • 多线程踩坑

    public  class ThreadTest implements Runnable {
        private static int j=0;
        Object object =new Object();
        private String name;
        private ThreadTest(String name)
        {
            this.name=name;
        }
    
        public static void main(String[] args) throws InterruptedException{
            Thread t1 = new Thread(new ThreadTest("xu"));
            Thread t2 = new Thread(new ThreadTest("shi"));
    
            t2.start();
            System.out.println("hhh");
            t1.start();
           // t2.notify();
        }
    
        public void run(){
            synchronized (object) {
                for (int i = 0; i < 10; i++) {
                    try {
                        object.wait(100);//Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }catch (IllegalMonitorStateException e){
                        //e.printStackTrace();
                    }
    
                    j++;
                    System.out.println(i + name);
                }
            }
        }
    
    }

    wait时结果如下

    hhh
    0shi
    0xu
    1shi
    1xu
    2shi
    2xu
    3shi
    3xu
    4xu
    4shi
    5shi
    5xu
    6xu
    6shi
    7shi
    7xu
    8xu
    8shi
    9shi
    9xu

    sleep时结果如下

    hhh
    0shi
    0xu
    1xu
    1shi
    2xu
    2shi
    3shi
    3xu
    4xu
    4shi
    5shi
    5xu
    6shi
    6xu
    7xu
    7shi
    8xu
    8shi
    9xu
    9shi

    显然,sleep()实现了线程并发,wait()也同样。

    注意:wait()是Object的方法,sleep()是Thread的静态方法。

  • 相关阅读:
    Oracle表空间管理
    Oracle创建函数
    Oracle触发器
    Oracle概要文件
    Oracle结构控制语句
    比较实用的网站
    Java23种设计模式之单例模式
    Java 对象属性的遍历
    JQuery 多个ID对象绑定一个click事件
    好习惯的养成****
  • 原文地址:https://www.cnblogs.com/BBchao/p/7884683.html
Copyright © 2011-2022 走看看