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的静态方法。

  • 相关阅读:
    算法
    如果业界中不用高级算法和数据结构,那为什么还要学?
    CentOS 7 运行级别切换
    ECharts笔记
    Vue+TypeScript学习
    TypeScript深入学习
    TypeScript基础
    检测数据类型的方法
    前端提高性能的方式
    柯里化
  • 原文地址:https://www.cnblogs.com/BBchao/p/7884683.html
Copyright © 2011-2022 走看看