`

线程范围内共享变量的概念与作用

阅读更多
/**
 * ThreadScopeShareData.java
 * cn.com.songjy.test.socket.thread
 * Function: TODO 
 *
 *   version    date      author
 * ──────────────────────────────────
 *   	1.0	 2013-8-16    songjy
 *
 * Copyright (c) 2013, TNT All Rights Reserved.
*/

package cn.com.songjy.test.socket.thread;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * ClassName:ThreadScopeShareData
 * 线程范围内共享变量的概念与作用
 * @author   songjy
 * @version  1.0
 * @since    v1.0
 * @Date	 2013-8-16	下午4:04:45
 */

public class ThreadScopeShareData {
	
	private static Log log = LogFactory.getLog(ThreadScopeShareData.class);
	private static Map<Thread, Integer> thread_data = new HashMap<Thread, Integer>();
	private static int data;

	public static void main(String[] args) {
		
		for(int i=0; i<5; i++)
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				data = new Random().nextInt();
				int data = new Random().nextInt();
				log.info(Thread.currentThread().getName() + " has put data :" + data);
				thread_data.put(Thread.currentThread(), data);
				new A().get();
				new B().get();
			}
		}).start();
	}
	
	static class A {
		public void get(){
			int data = thread_data.get(Thread.currentThread());
			log.info("A from " + Thread.currentThread().getName() + " get data :" + data);
		}
	}
	
	static class B {
		public void get(){
			int data = thread_data.get(Thread.currentThread());
			log.info("B from " + Thread.currentThread().getName() + " get data :" + data);
		}
	}
}



引自
http://down.51cto.com/data/443412
  • 大小: 149 KB
  • 大小: 119.8 KB
分享到:
评论

相关推荐

    Java多线程与并发库高级应用视频教程22集

    【】01传统线程技术回顾【】02传统定时器技术回顾【】03传统线程互斥技术【】04传统线程同步通信技术【】04传统线程同步通信技术_分割纪录【】05线程范围内共享变量的概念与作用【】06ThreadLocal类及应用技巧【】06...

    易语言线程中的变量应用

    1. **全局变量**:全局变量在整个程序范围内可见,包括所有线程。当一个线程修改全局变量时,其他线程也可以立即看到这个变化。然而,由于多线程可能导致并发访问同一变量,因此需要考虑同步机制,如使用“锁定资源...

    张孝祥Java多线程与并发库高级应用笔记

    - **概念**:线程范围内共享变量是指在线程间共享的数据,需小心处理以避免竞态条件和数据不一致性。 - **作用**:允许线程间通信和协作,但需采用适当的同步机制(如`synchronized`关键字、`Lock`接口)以确保数据...

    python 多线程共享全局变量的优劣

    全局变量是在程序的全局范围内定义的变量,可以在程序的任何地方被访问。而在Python中,多线程是指在单个进程中同时执行多个线程,每个线程可以独立地执行任务。 **一、多线程共享全局变量的原理** 在Python中,多...

    多线程并发编程-同步与互斥-原⼦变量-并发和⽆锁 数据结构

    在线程的共享资源中,全局变量是在程序的全局范围内定义的变量,堆用于存储线程创建的对象等信息,除此之外,所有线程共享同一块代码段。 5.2 线程⽣命周期 线程的生命周期涵盖了从其创建、执行、到终止的所有阶段...

    经典Java多线程与并发库高级应用

    除了上述提到的技术点,本教程还会涉及到ThreadLocal类、线程范围内共享变量、多个线程之间共享数据的方式、java5原子性操作类的应用、Callable与Future的应用、线程锁技术、读写锁技术等内容。这些技术点都旨在帮助...

    Windows多线程编程详解

    TLS允许每个线程拥有自己的数据副本,即使这些数据在全局范围内声明。这对于需要在多个线程间区分状态的情况非常有用。 总结,Windows多线程编程涉及的内容广泛,从线程创建、同步、通信到线程管理,都需要开发者...

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

    在实现断点续传时,每个线程可能负责下载文件的一个部分,通过共享变量(如`AtomicInteger`)记录当前的下载进度,并确保线程安全。 线程安全是多线程编程中的一个重要概念,指的是在多线程环境下,一个类或者对象...

    linux多线程手册

    - 线程栈是线程存储局部变量和函数调用帧的地方。 ##### 设置栈地址和大小 - `pthread_attr_setstack`函数用于设置线程栈的地址和大小。 ##### 获取栈地址和大小 - `pthread_attr_getstack`函数用于获取线程栈的...

    操作系统——线程

    操作系统中的线程是执行上下文的一个基本单位,它在进程的范围内运行,共享同一内存空间。线程模型的引入使得程序能实现并发执行,提高了系统的并行性和资源利用率。在这个主题中,我们将深入探讨线程的概念、类型、...

    java 猜数字游戏,学习线程

    - 随机数生成线程:使用`Random`类生成一个指定范围内的随机整数,并将其存储在一个全局变量中,如`volatile`修饰的`int`类型变量,以确保线程可见性。 - 猜测线程:不断接收用户输入,与随机数进行比较,判断是否...

    java 多线程异常处理

    本实验报告主要涵盖了Java异常处理机制、多线程概念与实现,以及多线程同步问题。 首先,Java的异常处理机制包括了五个关键字:`try`、`catch`、`finally`、`throw`和`throws`。在实验题1中,我们看到了`try-catch`...

    关于线程(java)两天的课件

    继承Thread类的方法直接扩展Thread类,而实现Runnable接口则更适合多线程资源共享的情况,因为Java不支持多重继承。 线程的状态是理解其工作原理的关键。Java线程有五种基本状态:新建(New)、可运行(Runnable)...

    Java多线程编程总结

    #### 一、Java线程:概念与原理 1. **操作系统中线程和进程的概念** - 当前的操作系统通常为多任务操作系统,多线程是实现多任务的一种手段。 - **进程**:指内存中运行的应用程序,每个进程拥有独立的内存空间。...

    MFC多线程开发例程源码4

    3. **CMutex**:互斥量与临界区类似,也是保证同一时间只有一个线程访问资源,但它的作用范围不仅仅限于进程内的线程,还可以跨进程同步。 4. **CEvent**:事件对象允许一个线程通知另一个线程何时开始工作或者何时...

    MFC多线程基础解析及例子

    - **CMutex**:全局范围内的互斥量,确保同一时刻只有一个线程能访问资源。 - **CEvent**:用于线程间的信号通信。 正确使用这些同步对象,可以防止数据不一致性和死锁问题。 **线程通信** 在MFC中,线程间通信...

    vc多线程

    全局锁是在整个程序范围内生效的锁,通常用于保护全局变量或跨多个线程的数据结构。在VC++中,我们可以使用`CRITICAL_SECTION`结构来实现全局锁,通过`InitializeCriticalSection`初始化,`EnterCriticalSection`...

Global site tag (gtag.js) - Google Analytics