zoukankan      html  css  js  c++  java
  • 同步函数死锁现象

    多线程:一个进程中有多个线程可以同时执行任务

    多线程的好处:

    1、解决一个进程中可以同时执行多个任务的问题。

    2、提高了资源利用率

    多线程的弊端:

    1、增加了CPU的负担

    2、降低了一个进程中线程的执行概率

    3、出现了线程安全问题

    4、会引发死锁现象

    自定义线程的实现方式:

    方式一:

    1、自定义一个类继承Thread类。

    2、重写Thread类的run方法,把自定义线程的任务代码写在run方法上

    3、创建Thread的子类对象,并且调用start方法启动一个线程

    线程安全问题出现的根本原因:

    1、存在两个或两个以上的线程共享同一资源

    2、多谢操作共享资源的代码有多行

    同步函数:使用synchronized修饰的函数

    同步函数要注意的事项:

    1、如果是一个非静态的同步函数的锁对象是this对象,如果是静态的同步函数的锁对象是当前函数所属的类的字节码文件(class对象)。

    2、同步函数的锁对象是固定的,不能由你来指定。

    package com.longteng.lesson2;
    
    public class SaleTicket extends Thread {
        static  int count = 5000;
        public SaleTicket(String name){
            super(name);
        }
        @Override
        public synchronized void run(){
            while(true){
                    if (count > 0) {
                        count = count -1000;
                        System.out.println (Thread.currentThread ().getName () + "取走了1000块,还剩余" + count + "");
                    } else {
                        System.out.println ("取完了。。");
                        break;
                    }
            }
    
        }
    
        public static void main(String[] args) {
            SaleTicket thread1 = new SaleTicket ("老公");
            SaleTicket thread2 = new SaleTicket ("老婆");
            thread1.start ();
            thread2.start ();
        }
    }
    老婆取走了1000块,还剩余3000元
    老婆取走了1000块,还剩余2000元
    老婆取走了1000块,还剩余1000元
    老婆取走了1000块,还剩余0元
    取完了。。
    老公取走了1000块,还剩余4000元
    取完了。。

    推荐使用同步代码块

    1、同步代码块的锁由我们随意指定,方便控制,同步函数的锁对象是固定的

    2、同步代码块可以很方便控制需要被同步代码的范围,同步函数必须是整个函数的所有代码都被同步

    java中的同步机制解决了线程安全的问题,但同时也引发了死锁现象

  • 相关阅读:
    ListenerExecutionFailedException: Listener threw exception
    SpringCloud网关无法加载权限及IP黑名单白名单
    IDEA引入jar但无法导入class
    net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet/sf/jsqlparse
    mysql索引
    selenium
    Zuul的容错与回退与Zuul的高可用
    fastjson json转linkedhashmap为null
    微信H5支付签名校验错误
    追踪线程
  • 原文地址:https://www.cnblogs.com/zhou-test/p/9873959.html
Copyright © 2011-2022 走看看