功能:实现多个线程共享同一个数据。 一个线程负责对数据进行加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();
分享到:
相关推荐
Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共享数据主要有两种方式: 使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到...
前几天学习共享内存,和多线程应用写了个小程序,给初学者一点帮助
linux多线程间使用共享内存例程,C++版本。可用于大量数据的多线程共享。
1、运用多线程和Socket技术实现Socket Server端侦听多个客户端请求; 2、实现服务器端循环处理客户端不同请求从而实现不同测试要求,并向客户端循环发送数据; 3、实现客户端向服务器端发送不同测试命令,并接收...
NULL 博文链接:https://903497571.iteye.com/blog/1869428
C#多线程互斥实例 多线程获取同一变量(不重复)。是一个很好的学习例子
java中的多线程内部类实现数据共享和Runnable实现数据共享借鉴.pdf
java中的多线程内部类实现数据共享和Runnable实现数据共享归类.pdf
NET中多线程间资源共享与访问
Qt线程间共享数据主要有两种方式: 1)使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。 2)使用singal/slot机制,把数据从一个...
几个多线程之间的互斥,同步;WPF主界面
文章地址[https://blog.csdn.net/MMTS_yang/article/details/110071610], 不必再这里下载,环境qt5.12.3
多线程函数的实例教程 很经典很经典很经典很经典
多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存
#资源达人分享计划#
本代码介绍了如何给线程传递参数,以及用参数在主线程中显示数据
模拟多线程共享数据~购票
所谓单个写入程序/多个阅读程序的线程同步问题,是指任意数量的线程访问共享资源时,写入程序(线程)需要修改共享资源,而阅读程序(线程)需要读取数据。在这个同步问题中,很容易得到下面二个要求: 1) 当一个...
C#的多线程同步,C#中四种进程或线程同步互斥的控制方法
linux多线程设计是指基于Linux操作系统下的多线程设计,包括多任务程序的设计,并发程序设计,网络程序设计,数据共享等。Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用...