zoukankan      html  css  js  c++  java
  • 线程安全

    /**
     * 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。
     * synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为"互斥区"或"临界区"
     */
    public class MyThread extends Thread{
        private int count = 5 ;
        //synchronized加锁
        public synchronized void run(){
            count--;
            System.out.println(Thread.currentThread().getName() + " count = "+ count);
        }
        public static void main(String[] args) {
            /**
             * 分析:当多个线程访问myThread的run方法时,以排队的方式进行处理(这里排对是按照CPU分配的先后顺序而定的,可从输出顺序看出),
             *         一个线程想要执行synchronized修饰的方法里的代码:
             *         1 尝试获得锁
             *         2 如果拿到锁,执行synchronized代码体内容;拿不到锁,这个线程就会不断的尝试获得这把锁,直到拿到为止,
             *            而且是多个线程同时去竞争这把锁。(也就是会有锁竞争的问题)
             */
            MyThread myThread = new MyThread();
            Thread t1 = new Thread(myThread,"t1");
            Thread t2 = new Thread(myThread,"t2");
            Thread t3 = new Thread(myThread,"t3");
            Thread t4 = new Thread(myThread,"t4");
            Thread t5 = new Thread(myThread,"t5");
            t1.start();
            t2.start();
            t3.start();
            t4.start();
            t5.start();
        }
    }
    /**
     * 输出:t1 count = 4
            t3 count = 3
            t2 count = 2
            t4 count = 1
            t5 count = 0
    */
  • 相关阅读:
    Xcode配置.pch文件
    iOS ViewController生命周期
    小技巧 -- 隐藏导航栏返回按钮附带的文字
    添加App启动页面
    iOS 关于nil和Nil及null与<null>的区别
    文件上传之组件
    js验证
    java mail
    validform 一款好用的表单验证插件
    tomcat启动时出错
  • 原文地址:https://www.cnblogs.com/fengmingyue/p/6677981.html
Copyright © 2011-2022 走看看