`
Johnny_001
  • 浏览: 2027 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

多线程的数据共享

 
阅读更多
功能:实现多个线程共享同一个数据。 一个线程负责对数据进行加1,另一个线程负责对进程进行减1.

首先:定义一个ShareData类。在类定义两个方法,分别为数据的增加,和数据的减少。

具体代码如下:

static class ShareData {
    private int j;

    public void increament() {
       System.out.println("I am Thread "+Thread.currentThread
                          ().getName + "j = "+j);
        j++;
    } 
    public void descreament() {
       System.out.println("I am Thread "+Thread.currentThread
                          ().getName + "j = "+j);
        j--;
    }


  要是两个方法同时运行,应当定义对个线程。因为线程里的run()方法各不一样,
   考虑打造实现了两个Runnable的类.
 
 
  class MyRunnable1 implements Runnable {

      public void run() {

      }

   }

   class MyRunnable2 implements Runnable {

       public void run() {
     
       }
   }


两个线程的run方法里面要操作的是同一个数据对象,怎么去实现呢?


把要操作的那个数据分别传递给他们,参数的传递让我们容易联想到构造函数。

对的,  在构造函数里面把数据传递给他们。


class MyRunnable1 implements Runnable {
      private ShareData data1;
      //要操作的数据
      pubulic MyRunnable1(ShareData data1) {
          this.data1 = data1
      }

      public void run() {
          while(true) {
           data1.increament();
           //对数据进行增加
           }
      }

   }


   class MyRunnable2 implements Runnable {
      private ShareData data1;
      //要操作的数据
       public MyRunnable2(ShareData data1) {
         this.data1 = data1;
      }
       public void run() {
          while(true) {
            data1.descreament();
            //对数据进行减
            }
       }
   }



主方法:

 
    ShareData data1 = new ShareData();
    //定义一个要被两个线程操作的数据.
    new Thread(new MyRunnable1(data1)).start();
    new Thread(new MyRunnable2(data1)).start();
























 
1
2
分享到:
评论
2 楼 Johnny_001 2011-11-12  
好的,谢谢你的建议
1 楼 1927105 2011-11-09  
注意排版
引用

相关推荐

    qt线程共享数据 信号和槽方式

    Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共享数据主要有两种方式: 使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到...

    java中的多线程内部类实现数据共享和Runnable实现数据共享借鉴.pdf

    本篇将探讨两种在Java中实现多线程数据共享的方式:通过内部类和实现`Runnable`接口。 首先,让我们来看看如何使用`Runnable`接口实现数据共享。`Runnable`接口是Java提供的一种创建线程的方式,它允许我们将线程的...

    多线程多进程

    1. 数据共享和同步:多线程数据共享复杂要用到 IPC,数据时分开的,同步简单,多线程因为共享进程的数据,所以数据共享简单,但是在因为这个原因导致同步复杂。 2. 内存和 CPU:多进程占用的内存多,切换很复杂,CPU...

    winform 多线程处理数据

    为了解决这个问题,我们可以利用C#中的多线程技术来实现后台处理数据,从而保持UI的响应性。本篇将详细讨论如何在WinForm应用中运用多线程处理数据以及异步更新UI。 1. **什么是多线程?** 在计算机科学中,多线程...

    多线程操作共享文件.zip

    综上所述,这个Delphi项目提供了一个实例,演示如何在多线程和多进程中使用互斥体保护共享文件的访问,确保数据的一致性和程序的稳定性。通过分析和学习此项目,开发者可以更好地理解和掌握Delphi中的多线程编程和...

    针对于Executor框架,Java API,线程共享数据

    - **使用锁和条件变量**:锁机制是解决多线程数据共享问题的一种常见手段。Java提供了多种锁的实现方式,包括synchronized关键字、ReentrantLock等。同时,条件变量(Condition)的使用可以帮助线程进行等待和唤醒...

    多线程资源共享集合

    在编程领域,多线程资源共享是并发编程中的一个重要主题,特别是在Java等支持多线程的编程语言中。本文将深入探讨多线程环境下如何管理和控制资源共享,主要关注`synchronized`关键字、`Runnable`接口以及`Thread`类...

    qt 多线程共享全局缓冲区

    本篇文章将深入探讨如何在Qt 5.12.3中实现多线程,并且讲解如何安全地在不同线程间共享全局缓冲区。 在Qt中,我们可以使用QThread类来创建和管理线程。QThread提供了信号和槽机制,使得线程间的通信变得更加方便。...

    多线程导入excel 数据

    在Java编程中,多线程导入Excel数据是一项常见的任务,特别是在大数据处理和高并发场景下。这个场景通常涉及到性能优化和资源管理,以确保系统稳定性和数据一致性。下面将详细阐述多线程导入Excel数据的核心知识点。...

    共享内存多线程数据交换(C++)

    前几天学习共享内存,和多线程应用写了个小程序,给初学者一点帮助

    C#多线程互斥实例 多线程获取同一变量

    在这个"多线程互斥实例 多线程获取同一变量"的示例中,我们将探讨如何在多个线程中安全地访问共享资源,避免数据不一致性和竞态条件。 首先,我们需要理解多线程中的一些核心概念: 1. **线程**:线程是操作系统...

    多线程数据同步

    总之,多线程数据同步是并发编程的关键挑战,通过使用临界区对象等同步机制,可以有效地管理共享资源的访问,防止数据不一致性。理解和熟练运用这些同步工具对于编写高效、稳定的多线程程序至关重要。在实际开发中,...

    C#多线程数据采集器

    总结,C#多线程数据采集器设计要考虑线程的创建与管理、同步与通信、异常处理等多个方面。通过合理利用多线程,可以大幅提升数据采集的效率,同时保证程序的稳定性和正确性。提供的压缩包中的“多线程采集C#源代码”...

    java多线程处理数据库数据

    1. **线程安全**:由于多线程环境下可能存在数据竞争,所以在访问共享资源(如数据库连接)时,需要确保线程安全。可以使用`synchronized`关键字或者`Lock`来同步访问。 2. **事务管理**:在多线程环境中,可能需要...

    C Socket通信多线程数据双向收发实例VS2010(全部源码)

    1、运用多线程和Socket技术实现Socket Server端侦听多个客户端请求; 2、实现服务器端循环处理客户端不同请求从而实现不同测试要求,并向客户端循环发送数据; 3、实现客户端向服务器端发送不同测试命令,并接收...

    多线程同步大量数据转录的多线程和同步

    在实现多线程数据转录的过程中,队列(`Queue<T>`)被用作数据结构来存储待处理的数据。队列是一种先进先出(FIFO)的数据结构,非常适合用于处理多线程环境中的任务调度。写入线程将数据添加到队列的尾部,而读取...

    易语言多线程数据池模块源码(文本池+数据池-多线程版)

    《易语言多线程数据池模块源码解析与应用》 在编程领域,尤其是在处理大量数据的场景下,多线程技术和数据池的设计是至关重要的优化手段。易语言作为一款面向初学者和专业开发者的中文编程环境,提供了一系列的支持...

    pb9多线程控件,能够真实实现多线程

    为了深入理解并实际运用这些知识点,开发者需要研究提供的示例代码,了解Ttimer.ocx控件的使用方法,以及如何在PB9中管理多线程任务,包括线程同步、数据共享和错误处理等方面。同时,也需要关注可能存在的兼容性和...

    易语言多线程传递自定义数据(免加延时方法)

    本主题主要探讨的是在易语言中如何实现多线程并传递自定义数据,而且无需额外添加延时方法。 易语言的多线程功能主要通过“创建线程”和“结束线程”等指令来实现。创建线程时,通常会有一个主线程(默认运行的程序...

    多线程处理数据(工具)样例

    这个名为“多线程处理数据(工具)样例”的项目,显然旨在利用多线程的优势来加速数据流的处理。下面将详细探讨相关知识点。 多线程是操作系统提供的一种机制,允许一个程序同时执行多个任务或子任务。在单核处理器...

Global site tag (gtag.js) - Google Analytics