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++;
                }
            }
        }
    }
  • 相关阅读:
    jsp——学习篇:简单使用CSS
    MongoDB分片式服务器集群配置
    PHP上传文件
    【转】【thinkphp3.x】thinkphp3.x中display方法及show方法的使用
    (转)Mysql用户与权限管理
    MonkeyRunner 之如何获取APP的Package Name和Activity Name
    一个典型的PHP分页实例代码分享
    HTML meta charset 定义网页编码信息
    【转】PHP连接MySQL数据库
    一个漂亮的php验证码类(分享)
  • 原文地址:https://www.cnblogs.com/tianming18/p/10242715.html
Copyright © 2011-2022 走看看