zoukankan      html  css  js  c++  java
  • Java基础——多线程(2)

    多线程的状态:

    创建线程的第二种方式:实现Runnable接口。

    (1)定义一个类实现Runnable。

    (2)覆盖Runnable接口中的run方法,将线程要运行的任务代码存储到该方法中。

    (3)通过Thread类创建线程对象,并将实现了Runnable接口的对象作为Thread类的构造函数的参数进行传递。

    (4)调用THread类的start方法开启线程。

    实现Runnable接口的好处:

    (1)避免了继承Thread类的单继承的局限性(继承了Thread类就不能继承其他类了)。

    (2)Runnable接口的出现更符合面向对象,将线程单独进行对象的封装。

    (3)Runnable接口出现降低了线程对象和线程任务的耦合性。

    所以,以后创建线程都使用第二种方法。

    多线程的安全问题

    产生原因: 1、线程任务中有处理到共享数据

                   2、线程任务中有多条线程对共享数据操作。  一个线程在操作共享数据的过程中,其他线程参与运算,造成数据错误。

    解决思想:只要保证多线程操作共享数据的代码在某一段时间内被一条线程所执行,在执行期间不允许其他线程参与运算。

    用到了同步代码块

    synchronized (object){

         //需要同步的代码。

    }

    同步在目前情况下保证了一次只有一个线程在执行,其他线程进不来。这就是同步的机制。

    同步的好处: 解决了多线程的安全问题。

            弊端: 降低效率(可接受)

    有可能出现这样一中情况,嫁了同步机制,安全问题依旧!

    这一定是同步出现了问题。

    只要遵守同步的前提就能解决问题:

    多个线程在同步中必须使用同一个(Object)

  • 相关阅读:
    JOISC2020 题解
    Linux系统时钟与硬件时钟
    Excel Application操作指南
    WinCC 7.5 SP1安装方法
    关于WinCC V15.1使用ActiveX的ListView控件时添加失败问题
    WinCC 利用VBScript连接mysql数据库
    WPF中通过AForge实现USB摄像头拍照
    ESP32引脚参考
    C语言创建循环缓冲区(环形缓冲区)-- Circular Buffer(Ring Buffer)
    Android Studio汉化教程
  • 原文地址:https://www.cnblogs.com/lenjava/p/3780770.html
Copyright © 2011-2022 走看看