`

多线程二【共享数据】

    博客分类:
  • java
阅读更多
Thread.currentThread();//获得当前正在执行这行代码的线程的引用
Thread.currentThread().getName(); //获得线程名字


package text01;
/**
 * 线程共享数据  
 */
class MyThreadT implements Runnable{	// 继承Thread类,作为线程的实现类
	private int ticket = 5 ;		// 表示一共有5张票

	public void run(){	// 覆写run()方法,作为线程 的操作主体
		for(int i=0;i<100;i++){
			if(this.ticket>0){
				System.out.println("卖票:ticket = " + ticket--) ;
			}
		}
	}
};
public class RunnableDemo02{
	public static void main(String args[]){
		MyThreadT mt = new MyThreadT() ;	 // 实例化对象
		new Thread(mt).run() ;	// 调用线程主体
		new Thread(mt).run() ;	// 调用线程主体
	}
};
运行结果:
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 1


package text01;
/**
 * 线程不能共享数据   
 */
class MyThread1 extends Thread{	// 继承Thread类,作为线程的实现类
	private int ticket = 5 ;		// 表示一共有5张票
	public void run(){	// 覆写run()方法,作为线程 的操作主体
		for(int i=0;i<100;i++){
			if(this.ticket>0){
				System.out.println("卖票:ticket = " + ticket--) ;
			}
		}
	}
};
public class ThreadDemo04{
	public static void main(String args[]){
		MyThread1 mt1 = new MyThread1() ;	 // 实例化对象
		MyThread1 mt2 = new MyThread1() ;	 // 实例化对象 
		mt1.run() ;	// 调用线程主体
		mt2.run() ;	// 调用线程主体 
	}
};
运行结果:
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 1
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 1


分享到:
评论

相关推荐

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

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

    winform 多线程处理数据

    - 为避免资源竞争,确保线程安全,特别是在多个线程访问共享数据时。 通过理解和应用这些概念,开发者可以构建出高效且用户体验良好的WinForm应用,即使在处理大量数据时也能保持界面的响应性。

    多线程导入excel 数据

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

    多个线程之间共享数据的方式

    NULL 博文链接:https://903497571.iteye.com/blog/1869428

    多线程操作共享文件.zip

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

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

    3. **共享数据与线程同步**:使用全局变量或共享内存,配合同步原语避免数据冲突。 4. **事件驱动编程**:利用事件替代延时,提高线程的利用率。 理解并掌握这些知识点,开发者就能在易语言中高效地编写多线程程序...

    java多线程处理数据库数据

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

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

    然而,多线程也带来了数据一致性和同步问题,特别是在共享资源访问的情况下。如果没有适当的同步机制,多个线程同时访问同一数据可能会导致数据混乱或丢失,进而影响程序的稳定性和正确性。 ### ...

    qt 多线程共享全局缓冲区

    另外,Qt还提供了QSharedMemory和QSystemSemaphore等高级同步机制,适用于跨进程的共享数据。这些工具可以帮助你在多进程环境中实现全局缓冲区的共享,但要注意它们的使用方式和线程安全问题。 总结来说,Qt 5.12.3...

    多线程资源共享集合

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

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

    1. **线程安全**:当多个线程访问共享数据时,必须确保数据的一致性和完整性。为此,可以使用锁、信号量、原子操作等同步机制,防止数据竞争。 2. **负载均衡**:在分配任务给线程时,要尽可能使每个线程的工作负载...

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

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

    qt多线程实例-数据处理和UI界面显示

    3. **数据共享**:在多线程环境下,数据共享需要特别注意线程安全。可以使用`QMutex`、`QReadWriteLock`等同步工具防止数据竞争。当多个线程尝试同时访问和修改同一数据时,这些同步机制可以确保数据的一致性。 4. ...

    windowsC++多线程加锁信号量共享内存

    而当线程需要修改共享数据时,使用互斥锁确保任何时候只有一个线程进行修改。 在"threadlock4"这个文件中,很可能包含了示例代码或者详细教程,演示了如何在Windows环境下使用C++的多线程、互斥锁、信号量和共享...

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

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

    linux多线程间使用共享内存例程,C++版本。

    linux多线程间使用共享内存例程,C++版本。可用于大量数据的多线程共享。

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

    本文将深入探讨如何在 Delphi 中创建多线程,并且着重讲解如何传递参数给线程以及如何在主线程中同步显示由线程处理后的数据。 一、多线程基础 在 Delphi 中,我们可以使用 TThread 类来创建和管理线程。TThread 是...

    C#多线程数据采集器

    本文将深入探讨C#中的多线程,以及如何利用多线程进行数据采集。 1. **线程基础** - **线程的定义**:线程是程序执行的最小单位,每个线程都有自己的执行上下文和栈空间,共享同一进程的内存资源。 - **线程创建*...

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

    ### 在Delphi中利用多线程实现数据采集的方法 #### 概述 本文档主要介绍了如何在Delphi环境中使用多线程技术实现数据采集的基本原理与实现步骤。Delphi是一种功能强大的开发工具,广泛应用于Windows应用程序开发。...

    多线程处理数据

    二、Java中的多线程 Java提供两种方式创建线程: 1. 继承Thread类:创建一个新的类,该类继承Thread类,并重写run()方法。实例化这个类的对象后,调用start()方法启动线程。 2. 实现Runnable接口:创建一个实现...

Global site tag (gtag.js) - Google Analytics