`
zheng0324jian
  • 浏览: 182163 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java的线程问题--线程

    博客分类:
  • java
 
阅读更多

java的线程可以并发的处理任务

一、创建线程的方式 有两种:

1 继承Thread类
    a 继承Thread类, 覆盖run()方法, 提供并发运程的过程
    b 创建这个类的实例
    c 使用start() 方法启动线程

2 实现Runnable接口
    a 实现Runnable接口, 实现run()方法, 提供并发运程的过程
    b 创建这个类的实例, 用这个实例作为Thread构造器参数
      创建Thread类.
    c 使用start() 方法启动线程

例如:

  class Foo implements Runnable{
    	public void run(){
    		//....
    	}
    }
    Thread t = new Thread(new Foo());
    t.start();

 可以使用 Thread.currentThread() 方法获得当前线程的引用。

这两种方式的区别,主要是关于共享资源,例如,售火车票的程序:共有100张票,四个售票口,每一个窗口只要售票都会使总票数-1,并且锁定正在出售的票,那么每个窗口都是一个线程,如果用第一种方式创建新的线程,那么他们每个线程操作的票数都是各自的私有资源,如果Runnable接口的实现类里面定义总票数,用实现类作为参数创建新线程,这样四个线程操作的车票资源就是同一个。

 

二、线程状态:
  1 new (新建)
  2 Runnable
  3 Running
  4 Block        阻塞
  5 Dided      

 

三、线程的同步
  1 多个线程并发读写同一个临界资源时候会发生线程安全问题
  2 可以使用 同步代码块解决 同步读写临界资源, 解决并发安全问题.

  3 a 同步代码块
        synchronized(同步监视器){
        }
     b 同步监视器 是一个任意对象实例. 是一个多个线程之间的互
        斥的锁机制. 多个线程要使用同一个"监视器" 实现同步互斥
     c  常见写法:
         synchronized(this){
         }
     d  如果方法的全部过程需要同步, 可以简单使用 synchronized
         修饰方法.

 

例子:

1 StringBuffer 是同步的
      synchronized append();
    StringBuilder 不是同步的
      append();
  2 Vector 和 Hashtable 是同步的
    ArrayList 和 HashMap 不是同步的
    
  3 Collections.synchronizedList()
   ArrayList list = new ArrayList();
   List syncList = Collections.synchronizedList(list);
 

 

分享到:
评论

相关推荐

    JAVA线程高级-线程按序交替执行

    在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。然而,在某些场景下,我们可能需要控制线程的执行顺序,确保它们按照特定的顺序交替运行,这在并发编程...

    Java-Thread-Affinity,将Java线程绑定到给定的内核.zip

    Java线程亲和性(Thread Affinity)是一个高级并发编程概念,主要涉及到操作系统调度和硬件资源的优化。在多核处理器系统中,线程亲和性允许开发者指定某个线程应该运行在哪个特定的处理器核心上,从而提高性能、...

    Java多线程-Socket编程

    Java 多线程-Socket 编程 Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口...

    java线程1-10-720p版本

    Java线程是并发编程的核心部分,它允许程序同时执行多个任务,从而提高系统效率和响应速度。在这个"java线程1-10-720p版本"的学习资源中,我们将会深入理解Java线程的基本概念、创建方式、以及如何进行有效管理。 ...

    Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar

    Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar Java开发案例-springboot-61-整合asyncTool京东多线程...

    Java多线程--等待所有子线程执行完的五种方法.docx

    在Java多线程编程中,有时我们需要确保所有子线程执行完毕后再进行后续操作,例如在并发测试、数据聚合或资源清理等场景。本篇文章将详细介绍五种在Java中等待所有子线程执行完的方法。 ### 方法一:使用`sleep`...

    Java线程pdf ---培训内部资料

    ### Java线程培训内部资料深度解析 #### 一、线程基本概念 线程作为并发执行的基本单位,是操作系统为了实现资源的有效利用和任务的高效处理而设计的一种机制。在Java中,线程是一个轻量级的过程,它可以独立于...

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    java多线程学习-ftp上传

    文件"forum.php.htm"、"691838.htm"、"6828269.htm"、"3957785.html"、"2aafb73d4408cfe23a87ceff.html"可能是讨论Java多线程和FTP上传的论坛帖子或文章,它们可能包含了实践经验、问题解答和代码示例。 "6828269_...

    WHUT-java多线程实验-第三周-文件上传和下载.zip

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了效率和资源利用率。在“WHUT-java多线程实验-第三周-文件上传和下载.zip”这个实验中,我们将重点探讨如何在多线程环境中实现文件...

    Java多线程编程总结

    Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-...

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

    "Java Socket学习---单线程阻塞"这个主题主要探讨了如何使用Java的Socket类进行单线程的阻塞式通信,这种模式通常用于简单的客户端-服务器应用。在这个场景中,服务器端通过一个线程处理一个客户端的请求,当请求被...

    Java多线程与线程安全实践-基于Http协议的断点续传

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

    Java多线程-线程的安全问题与线程的同步机制介绍

    Java多线程-线程的安全问题与线程的同步机制介绍 在 Java 多线程编程中,线程安全问题是非常重要的一个话题。当多个线程访问同一个资源时,如果只有读操作那么不会出现线程安全问题,但是如果多个线程对资源进行读...

    精灵线程(Daemon)或守护线程---马克-to-win java视频

    精灵线程(Daemon)或守护线程---马克-to-win java视频

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

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

    java线程安全-往盘子里放鸡蛋和向盘子里取鸡蛋

    总之,"java线程安全-往盘子里放鸡蛋和向盘子里取鸡蛋"是一个典型的并发编程问题,通过合理使用Java提供的同步机制,我们可以确保在多线程环境下正确地管理和操作共享资源,避免数据不一致性和竞态条件等问题。...

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

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

    Java多线程-多线程知识点总结和企业真题

    ### Java多线程知识点总结及企业真题解析 #### 一、知识点总结 ##### (1)多线程相关概念 1. **程序、进程和线程的区分**: - **程序**:为了完成特定的任务而编写的指令集合。它是静态的概念。 - **进程**:...

Global site tag (gtag.js) - Google Analytics