`

向线程传递数据的三种方法

阅读更多
1.通过构造函数传递,这种很简单当传递参数少的时候可用。
2.通过类中定义一系列的public的方法或变量(也可称之为字段)。然后在建立完对象后,通过对象实例逐个赋值。
private String name;       
public void setName(String name)      
{          
    this.name = name;      } 

这也比较常见
3.通过回调函数传递数据
package thread;

class Data
{
	public int value = 0;
}

class Work
{
	public void process(Data data,Integer numbers)
	{
		for (int n : numbers)
		{
			data.value += n;
		}
	}
}

public class MyThread3 extends Thread{
	private Work work;
	public MyThread3(Work work)
	{
		this.work = work;
	}
	public void run ()
	{
		java.util.Random random = new java.util.Random();         
		Data data = new Data();          
		int n1 = random.nextInt(1000);          
		int n2 = random.nextInt(2000);          
		int n3 = random.nextInt(3000);
		work.process(data, n1, n2, n3);   // 使用回调函数          
		System.out.println(String.valueOf(n1) + "+" + String.valueOf(n2) + "+"                 
				+ String.valueOf(n3) + "=" + data.value);  
	}
	
	public static void main(String[] args)      
	{          
		Thread thread = new MyThread3(new Work());          
		thread.start();      
	}
}

    在上面代码中的process方法被称为回调函数。从本质上说,回调函数就是事件函数。在Windows API中常使用回调函数和调用API的程序之间进行数据交互。因此,调用回调函数的过程就是最原始的引发事件的过程。在这个例子中调用了process方法来获得数据也就相当于在run方法中引发了一个事件。
分享到:
评论

相关推荐

    Java多线程初学者指南(7):向线程传递数据的三种方法.docx )

    Java 多线程初学者指南之向线程传递数据的三种方法 在多线程编程中,向线程传递数据是一项非常重要的任务。与传统的同步开发模式不同,在多线程异步开发模式下,数据的传递和返回方式有很大的区别。因此,本文将...

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

    在创建子线程时,我们可能需要向其传递一些自定义的数据,以便在线程中使用这些数据来执行特定的操作。 传递自定义数据的方法主要有两种: 1. **参数传递**:在创建线程时,可以通过函数调用的方式传递参数。...

    易语言多线程传递文本参数两种方法

    本篇文章将深入探讨如何在易语言中通过两种不同的方法传递文本参数到线程中。 ### 方法一:使用线程创建时传递参数 易语言中,我们可以通过在创建线程时直接传递参数来实现。具体步骤如下: 1. **定义线程函数**...

    MFC 多线程之间通过消息传递数据

    本主题将深入探讨如何在MFC的多线程环境中通过消息传递来交换数据。 首先,我们要了解MFC对多线程的支持。MFC提供了一个CWinThread类,它是所有线程的基础。创建新线程时,通常会从CWinThread派生一个新的类,并...

    易语言多线程传递文本参数两种方法源码

    易语言多线程传递文本参数是开发中常常遇到的问题,下面将详细介绍两种常见的方法。 **方法一:使用全局变量** 易语言中,全局变量可以在程序的不同线程间共享数据,因此可以用来传递参数。这种方式简单直接,但...

    易语言线程返回数据的方法

    三、线程间数据交换 线程间数据交换是线程返回数据的基础。易语言提供了多种数据共享方式,如全局变量、内存块、互斥量等。其中,全局变量是最简单的方式,但存在数据同步问题;内存块可以用来传递大量数据,但需...

    易语言多线程传递多参数

    在单线程中,我们可以直接通过变量或参数传递数据。但在多线程环境中,由于线程间的并发执行,直接传递可能会引发数据不一致的问题。易语言提供了一种安全的方式来传递参数,即通过“线程参数”数据结构。创建线程时...

    delphi多线程传递参数及同步二

    在创建线程时,我们常常需要向线程传递参数以便它能执行特定的任务。在 Delphi 中,我们可以通过重写 TThread 的 Execute 方法来接收和使用这些参数。Execute 方法是线程运行的核心,通常在这里处理线程的工作逻辑。...

    利用Handler在线程之间传递数据

    这个demo介绍了通过Handler在线程之间传递消息,demo中一个三个线程,主线程,发送消息的分线程,接收消息的分线程。发送消息的分线程会通知主线程更改标签文字,同时会通知接收消息的分线程更改进度条的进度。

    Hystrix跨线程传递数据解决方案:HystrixRequestContext.docx

    ### Hystrix跨线程传递数据解决方案:HystrixRequestContext #### 前言 在分布式系统中,为了提高系统的稳定性和响应性,通常会采用微服务架构,并且使用断路器模式来隔离不同服务之间的故障传播。Netflix 的 ...

    线程间通信方式3:消息传递方式

    消息传递可以作为避免数据竞争的一种手段,因为每个线程通过消息队列顺序地接收和处理消息,而不是直接访问共享数据。 - 但需要注意的是,如果消息涉及到共享资源,仍需使用互斥量或临界区来保护这些资源。 6. **...

    易语言启动线程传自定义数据类型参数源码

    通过阅读和学习这个源码,开发者可以更好地理解和掌握在易语言中启动线程并传递自定义数据类型参数的方法,这对于开发复杂的多线程程序非常有帮助。 在实际应用中,需要注意的是,线程的并发执行可能导致数据竞争和...

    java向多线程中传递参数的三种方法详细介绍

    以下将详细介绍三种向Java多线程传递参数的方法。 1. **通过构造方法传递数据** 当创建Thread类或其子类的实例时,可以利用构造方法来传递数据。这些数据通常存储为类的成员变量,在`run()`方法中使用。例如: ``...

    java多线程编程之向线程传递数据的三种方法

    以下是三种主要的向线程传递数据的方法: 1. **通过构造方法传递数据** 这种方式是在创建线程对象时,通过构造函数将数据传入。例如,创建一个自定义的`Thread`子类,并在构造函数中接收数据,然后将其存储为类的...

    给Thread线程传递数据

    在提供的`Ex_20_2`示例文件中,可能包含了关于如何实际应用这两种方法的代码实例,你可以通过查看和运行这些示例来进一步理解并掌握给线程传递数据的技术。学习和实践这部分内容对于编写高效、可维护的多线程程序至...

    易语言CreateThread启动线程传递多个类型参数.rar

    综上所述,"易语言CreateThread启动线程传递多个类型参数.rar"这个资源包提供了一个解决在易语言中使用`CreateThread`创建多线程并传递多种类型参数的方法。通过学习和应用这个示例,开发者能够更好地理解和掌握...

    在Delphi中利用多线程实现数据采集的方法.doc

    3. **同步机制**:为了保证线程间的正确通信,Delphi提供了多种同步机制,如`Synchronize`函数用于在线程之间安全地传递数据和执行操作。 ##### 具体实例分析 1. **实例背景**:本实例旨在演示如何使用多线程技术...

    易语言线程返回数据的方法源码

    本文将深入探讨如何在易语言中实现线程返回数据的方法,以及相关的源码解析。 易语言是一种面向对象、中文编程的计算机程序设计语言,其目标是使普通用户也能方便地进行软件开发。在易语言中,我们可以使用“创建...

    Qt窗体间传递数据的三种模型

    本文将深入探讨Qt窗体间传递数据的三种主要模型:信号与槽机制、全局变量和属性绑定。 一、信号与槽机制 Qt的核心特性之一就是信号与槽机制,它是多线程和异步编程的基础。当一个对象的某个状态改变时,它可以发射...

    多线程向线程函数传递多个参数实例

    在这个实例中,我们将探讨如何在MFC对话框类中创建线程,并向线程函数传递多个参数。 在MFC中,我们通常使用`CWinThread`类来创建和管理线程。`CWinThread`提供了线程的基础设施,包括消息泵和线程同步机制。创建一...

Global site tag (gtag.js) - Google Analytics