首页 > 编程语言 >java-关键字与方法(一)

java-关键字与方法(一)

时间:2023-12-29 23:22:09浏览次数:28  
标签:java synchronized 代码 关键字 线程 notify sharedObject 方法

  1. synchronized关键字:synchronized关键字用于实现互斥访问共享资源的同步机制。它可以应用于方法或代码块。当一个线程进入synchronized代码块时,它将获得锁,其他线程必须等待锁释放才能执行该代码块。synchronized关键字确保了同一时间只有一个线程可以执行被保护的代码块,从而避免了数据竞争和并发问题。

    示例代码如下所示:

    public synchronized void synchronizedMethod() {
        // 互斥访问的代码
    }
    
  2. wait()方法和notify()方法:wait()和notify()方法是Object类中定义的方法,用于实现线程之间的协作和同步。这两个方法必须在synchronized代码块或synchronized方法中使用。

    • wait()方法:当一个线程调用wait()方法时,它会释放对象的锁,并进入等待状态,直到其他线程调用了该对象的notify()方法或notifyAll()方法来唤醒等待的线程。

      示例代码如下所示:

      synchronized (sharedObject) {
          while (!condition) {
              sharedObject.wait();
          }
          // 执行其他操作
      }
      
    • notify()方法和notifyAll()方法:当一个线程调用notify()方法或notifyAll()方法时,它会通知等待在同一个对象上的其他线程。被唤醒的线程将重新尝试获取对象的锁,并继续执行。

      示例代码如下所示:

      synchronized (sharedObject) {
          condition = true;
          sharedObject.notify(); // 或者 sharedObject.notifyAll()
      }
      

这些关键字和方法提供了Java中基本的线程同步机制,用于互斥访问共享资源和实现线程之间的协作。开发者可以根据具体的需求选择适合的方式来实现线程的同步和互斥,以确保多线程程序的正确性和可靠性。

标签:java,synchronized,代码,关键字,线程,notify,sharedObject,方法
From: https://www.cnblogs.com/zjsdbk/p/17935865.html

相关文章

  • java-多线程编程
    多线程是指在一个程序中同时执行多个线程,每个线程都是独立运行的。Java中的多线程编程允许在同一个程序中同时执行多个任务,以提高程序的效率和响应性。以下是一些与Java多线程编程相关的重要概念:线程(Thread):线程是程序的执行单元,可以并发执行多个任务。在Java中,可以通过创建Thre......
  • java-集合框架
    集合框架是Java中用于存储和操作数据集合的一组类和接口。它提供了各种实现了不同数据结构的集合类,例如列表(List)、集(Set)、映射(Map)等。以下是一些与Java集合框架相关的重要概念:集合接口(CollectionInterface):Java中的集合框架定义了多个核心接口,包括Collection、List、Set、Map等......
  • java-面向对象编程
    面向对象编程是一种编程范式,它将程序设计组织为对象的集合,这些对象通过相互之间的交互来完成任务。下面是面向对象编程的一些重要概念和Java的相关实现:类(Class)和对象(Object):在Java中,类是定义对象的模板。它描述了对象的属性(成员变量)和行为(方法)。对象是类的实例化结果,可以创建多......
  • 无涯教程-Java 正则 - Pattern int flags()函数
    java.util.regex.Pattern.flags()方法返回此模式的匹配标志。intflags()-声明publicintflags()intflags()-返回值编译此模式时指定的匹配标志。intflags()-示例下面的示例显示java.util.regex.Pattern.flags()方法的用法。packagecom.learnfk;importjava.......
  • Java
    Java类的封装1、类为什么要封装?如果不进行封装,那么对属性的操作,就具有可读可写能力并且可写的值没有做任何规范性的约束,会造成数据的不安全 2、访问控制修饰符Java中的访问控制修饰符有四种:public、protected、default、private用来控制类、属性、方法的访问范围1.publ......
  • 下载文件报错:java.io.IOException: UT010029: Stream is closed
    在项目中使用EasyExcel导出excel然后压缩成压缩包下载,下载也是能正常下载就是会抛出这个错误虽然说这个错误不影响下载功能,搞不好就因为这个错误某天系统崩溃,那时候就不是这么好玩了,于是我在百度上疯狂查找有的说是流没有关,要在finally里面把流关了关了之后,满怀期待的重新运......
  • 无涯教程-Java 正则 - static Pattern compile(String regex)函数
    java.util.regex.Pattern.compile(Stringregex)方法将给定的正则表达式编译为一个模式。staticPatterncompile-声明publicstaticPatterncompile(Stringregex)regex - 要编译的表达式。staticPatterncompile-异常PatternSyntaxException  -如果表达......
  • 无涯教程-Java 正则 - static Pattern compile(String regex, int flags)函数
    java.util.regex.Pattern.compile(Stringregex,intflags)方法将给定的正则表达式编译为一个模式。staticPatterncompile-声明以下是java.util.regex.Pattern.compile(Stringregex,intflags)方法的声明。publicstaticPatterncompile(Stringregex,intflags)reg......
  • Java的基础知识
    一、Java类的封装访问修饰符:在Java中,可以使用访问修饰符来限制对类、类的成员变量和方法的访问权限。常用的访问修饰符包括:public:公共访问修饰符,表示可以被任何类访问。private:私有访问修饰符,表示只能在当前类内部访问。protected:受保护访问修饰符,表示只能在当前类及其子类......
  • JavaWebDay6
    数据库:存储和管理数据的仓库数据库管理系统:DataBaseManagementSystem(DBMS),操纵和管理数据库的大型软件SQL:StructerQueryLanguage,操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准关系型数据库 SQL简介  注意--注释内容 --与注释内容之间有......