`
Lirongheng
  • 浏览: 5177 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA--线程的创建和一些安全问题

阅读更多
创建线程的目的?
创建线程的目的是为了开启一条执行路径去运行指定的代码和其他代码实现同时运行,而运行的指定代码就是这个执行路径任务。一般多线程至少也要两个线程,主线程和自定义的线程,主线程的任务定义在主函数中。

如何创建一个线程?
就暂时我知道的四种方式来创建一个线程
创建线程方法一:继承Thread类
步骤:
1. 定义一个类继承Thread
2. 覆盖Thread类中run方法
3. 直接创建Thread的子类对象创建线程
4. 调用start方法开启线程并调用线程的任务run方法执行
[img][/img]


 
创建线程方式二:实现Runnable接口
1. 定义类去实现Runnable接口
2. 覆盖接口中run方法,将线程的任务代码封装到run方法中去
3. 通过创建Thread类创建线程对象,并将Runnable接口中的子对象作为Thread类构造函数的参数进行传递
注:为什么?因为线程的任务都封装在Runnable接口子类对象的run方法中。所以要在线程对象创建时就必须明确要运行的任务
5. 调用线程对象的start方法开启线程
[img][/img]



创建线程方式三:以内部类的方式来创建线程
[img][/img]


在程序中使用匿名内部类创建线程十分方便,在一个方法调用中就可以启动一个线程,而且这个线程还可以直接调用类中的属性和方法;特别注意的是,在方法中启动匿名内部线程 时,如要向这个线程的 run 方法内传递参数,在创建方法中这个参数必须定义为 final 类型

创建线程方式四:这种凡事也是通过每部创建一个内部类来来继承TimerTask来实现的,但是这种方法是我掌握得不好。。。这个还要好好研究研究。。。。

多线程的一些安全问题:
比如说:有100张票,为了提高效率,我们可以用四个线程把这一百张票买完
下面的代码
[img][/img]


这个代码输出的结果是一共卖出了四百张票,这不是我们能够接受的结果
多线程安全问题产生的原因:
1.多个线程在操作共享的数据
2.操作共享数据的线程有多条,当一个线程在执行操作共享数据额多条代码过程中,其他线程参与了运算就会导致线程的安全问题


解决线程安全问题思路:
我们可以将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程不可以参与运算。必须要当前线程这些代码都执行完了其他线程才能参与运算,那么有什么办法可以解决这些问题呢?用同步可以解决这些问题,上述代码出现这种问题是因为四个线程同时在执行
[img][/img]


我们可以用同步代码块的方式来解决这个问题,只需要对代码坐车下面修改
[img][/img]


当然除了同步代码块的方式,还可以用同步方法的方式来解决这个问题,这两种方法的使用方式为:
1.同步代码块:
synchronized(对象){
     需要同步的代码
}
2.同步方法:
如:pubic synchronized int (方法名){}
  • 大小: 25.9 KB
  • 大小: 28.9 KB
  • 大小: 28.4 KB
  • 大小: 39.6 KB
  • 大小: 15.9 KB
  • 大小: 32.8 KB
分享到:
评论

相关推荐

    Java使用Callable和Future创建线程操作示例

    需要注意的是,在使用Callable和Future创建线程操作时,需要考虑线程安全性和性能问题。在实际开发中,需要根据具体情况选择合适的线程创建方式。 此外,Java中的线程创建方式还包括使用Runnable接口、Thread类、...

    Java--多线程编程

    每个Java线程都有一个优先级,范围从Thread.MIN_PRIORITY(1)到Thread.MAX_PRIORITY(10)。默认情况下,所有线程的优先级都是Thread.NORM_PRIORITY(5)。线程调度器根据优先级决定哪个线程应该先运行,但请注意...

    JAVA-多线程 所有文件

    4. **线程状态**:Java线程有五种状态:新建、就绪、运行、阻塞和终止。了解这些状态有助于理解线程的生命周期。 5. **同步机制**:Java提供了多种同步机制防止数据竞争,如`synchronized`关键字、`wait()`, `...

    java常见面试题---线程篇

    以下是一些关于Java线程的常见面试知识点,这些内容可能出现在线程.doc文档中: 1. **线程的创建方式**: - 实现`Runnable`接口:创建一个类实现`Runnable`接口,并重写`run()`方法,然后将实例传递给`Thread`类的...

    基于JAVA毕业设计-JAVA多线程与线程安全实践-基于Http协议的断点续传.rar

    Java提供了多种方式创建和管理线程,如`Thread`类和`Runnable`接口。在实现断点续传功能时,可能需要创建多个线程分别处理不同的下载部分,或者一个线程负责读取服务器数据,另一个线程负责写入本地文件,以实现并行...

    JAVA语言深入--多线程

    本篇将深入探讨Java中的多线程机制,包括线程的创建、管理以及如何处理并发环境中的数据安全问题。 首先,我们需要理解什么是线程。线程是操作系统分配CPU时间的基本单位,是程序执行的流。在Java中,每个程序都有...

    Java-Java线程编程教程

    Java线程编程是Java开发中的重要组成部分,尤其在如今并发处理和高性能系统设计中不可或缺。本教程将深入探讨Java多线程的相关概念、原理及实战技巧。 首先,我们需要理解什么是线程。线程是程序执行的基本单元,一...

    Java-JUC-多线程 进阶

    线程池可以重用线程,减少线程创建和销毁的开销。 四大函数式接口 Java 中提供了四种函数式接口:Runnable、Callable、Predicate、Function。这四种接口可以用于描述不同的函数式编程模型。 Stream 流式计算 ...

    JAVA-JavaThreadProgramming-Sams.zip_JAVA 设计_java 多线程_java 线程_多线程

    Java线程编程是Java开发中的重要组成部分,尤其在构建高性能、高并发的应用程序时不可或缺。本资料"JAVA-JavaThreadProgramming-Sams.zip"提供了一套详细的教程,旨在深入讲解Java中的多线程设计和实现。 Java多...

    Java Socket学习---多线程阻塞

    本教程主要探讨的是如何在Java中使用Socket实现多线程阻塞式通信,这通常涉及到服务器端(EchoServer)和客户端(EchoClient)的设计。在本文中,我们将详细解析`EchoServer.java`、`SocketUtils.java`和`EchoClient...

    经典Java --线程

    总之,Java线程是并发编程的核心,理解并熟练掌握线程的创建、同步、通信、异常处理和线程池等概念,对于编写高效、稳定的多线程程序至关重要。在实际开发中,应根据需求选择合适的方式和策略,确保线程安全和程序...

    mysql-connector-java-5.1.37jar包和源码

    通过阅读源码,开发者可以学习到网络通信、线程安全、异常处理等方面的知识,并且有助于优化数据库操作性能和解决连接问题。 总结来说,MySQL Connector/J 5.1.37是Java开发者与MySQL数据库交互的桥梁,它的使用...

    Java毕业设计-多线程与线程安全实践-基于Http协议的断点续传.zip

    线程安全是多线程编程中必须考虑的问题,主要是防止多个线程访问同一资源时出现数据不一致或竞态条件。Java提供了多种机制来保证线程安全,如`synchronized`关键字、`volatile`关键字、`Atomic`类等。在这个毕业设计...

    毕业论文设计-IT计算机-Java多线程与线程安全实践-基于Http协议的断点续传.zip

    这个项目涵盖了多个关键知识点,包括Java线程的基本概念、线程同步与通信、Http协议的理解以及文件传输的策略。 首先,Java中的线程是程序执行的独立路径,允许一个应用程序同时处理多个任务。创建线程主要有两种...

    Java-语言程序设计线程编程入门PPT.ppt

    Java语言程序设计线程编程是Java开发中至关重要的一部分,它涉及到多任务并发执行的能力,使得程序能够高效地利用计算资源。以下是对Java线程编程基础...在实际编程中,还需要考虑线程安全、性能优化和异常处理等问题。

    Java多线程-JDK5.0新增线程创建方式

    通过以上两个新增的线程创建方式,我们可以看到Java 5.0版本在多线程编程方面的改进和增强。使用`Callable`接口和线程池不仅提高了线程管理的灵活性,还增强了程序的可扩展性和性能表现。在实际开发过程中,根据具体...

    毕业设计项目开发-Java多线程与线程安全实践-基于Http协议的断点续传.zip

    在本毕业设计项目中,开发者深入实践了Java多线程技术以及线程安全问题,同时结合了HTTP协议来实现文件的断点续传功能。这是一个综合性的IT课题,涵盖了多个关键知识点,包括Java多线程编程、线程同步与安全、HTTP...

    java线程安全测试

    Java线程安全是多线程编程中的一个关键概念,它涉及到多个线程访问共享资源时可能出现的问题。在Java中,线程安全问题通常与并发、内存模型和可见性有关。Java内存模型(JMM)定义了如何在多线程环境下共享数据的...

    第-章-JAVA多线程优秀文档.pptx

    JAVA 多线程是 Java 语言中的一种机制,允许程序同时执行多个任务,以提高程序的效率...本文档对 JAVA 多线程进行了详细的介绍,并提供了一些实例分析和代码示例,希望能够帮助读者更好地理解和应用 JAVA 多线程技术。

    Java-for-thread.zip_java 线程

    2. **创建和启动Java线程** - **继承Thread类**:创建一个新的类,继承自`java.lang.Thread`,重写`run()`方法,然后创建该类的实例并调用`start()`方法来启动线程。 - **实现Runnable接口**:创建一个实现了`...

Global site tag (gtag.js) - Google Analytics