zoukankan      html  css  js  c++  java
  • 线程ThreadDemo04

    package day190109;
    
    public class 线程ThreadDemo04 {
        public static void main(String[] args) throws InterruptedException {
            A aa = new A();
            aa.start();;
            A aaa = new A();
            aaa.start();
            Thread.sleep(2000);
            System.out.println(A.a);
        }
    }
    class A extends Thread{
        public static int a;
        public static Object o = new Object();
        /**
         * 线程安全:就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,
         * 其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
         * 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
         * 线程安全:必须要使用很多<synchronized>关键字来同步控制,所以必然会导致性能的降低。
         * 线程安全:是通过线程同步控制来实现的,也就是synchronized关键字。
         */
        /**
         * 死锁:
         * 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,
         * 若无外力作用,它们都将无法推进下去。
         * 产生死锁的4个必要条件:
         (1) 互斥条件:一个资源每次只能被一个进程使用。
         (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
         (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
         (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
         */
        @Override
        public void run() {
            synchronized (this) {
                for (int i = 0; i < 10000; i++) {
                    a++;
                }
            }
        }
    }
  • 相关阅读:
    safeNet
    网店
    微信公众号自定义菜单与回车
    西游记对教育的启发
    zencart资源
    cmd批处理常用符号详解
    div垂直居中
    git工作量统计
    VS2012变化的快捷键:
    sql 树 递归
  • 原文地址:https://www.cnblogs.com/tianming18/p/10242715.html
Copyright © 2011-2022 走看看