`
嵇海波
  • 浏览: 14040 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java模拟线程干扰

 
阅读更多
package async;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Main {
	
	static final int threadInitNumber = 2;
	
	public static void main(String[] args){
		
		Counter counter = new Counter();
		
		List<Thread> threads = new ArrayList<Thread>(); 
		
		for(int i=0;i<threadInitNumber;i++){
			threads.add(new Thread(new Async(counter),"thread" + i));
		}
		
		for(Thread thread : threads){
			thread.start();
		}
	}

}

/*
 * 线程干扰:多个线程访问共享对象的非原子性操作时,会线程竞争,从而产生线程干扰
 * 
 * 模拟线程干扰
 */
class Async implements Runnable{
	
	private Counter counter = new Counter();
	
	public Async() {
		
	}
	public Async(Counter counter) {
		super();
		this.counter = counter;
	}
	
	@Override
	public void run() {
		
		Random random = new Random();
		while(true){
			if(random.nextInt(10)<5){
				print("execute increment:" + counter.current());
				counter.increment();
			}else{
				if(counter.current()>0){
					print("execute decrement:" + counter.current());
					counter.decrement();	
				}
			}
			print("counter current value:" + counter.current());
			if(random.nextInt(100)==1){
				print("exit thread......................");
				return;
			}
		}
	}
	
	void print(String content){
		
		System.out.println(Thread.currentThread().getName() + " ---> " + content);
	}
	
}

class Counter {
	
	private int count = 0;
	
	public int current(){
		return count;
	}
	
	public int increment(){
		return count++;
	}
	
	public int decrement(){
		return count--;
	}
}

 

分享到:
评论

相关推荐

    基于Java多线程同步技术的简易模拟售票系统实现.pdf

    根据给定文件的信息,本篇文档是关于Java多线程同步技术在简易模拟售票系统中的应用研究。文档详细介绍了多线程的概念、如何在Java中创建线程、线程同步技术以及如何利用这些技术来解决共享资源访问时的数据一致性...

    java模拟电梯上下楼程序

    Java中的`synchronized`关键字或者`ReentrantLock`等锁机制可以用来防止数据竞争,确保电梯在执行特定操作时不会被其他线程干扰。 3. **事件驱动编程**:用户界面的交互,如点击楼层按钮,会触发特定的事件。Java ...

    Java多线程Junit测试GroboUtils-5.zip

    6. **模拟和隔离**:可能包含工具来模拟线程间的交互,或者在测试环境中隔离线程,避免外部因素干扰。 通过这些工具,开发者可以更方便地编写多线程环境下的单元测试,确保代码在并发情况下仍然能正确工作。对于...

    计算机Java多线程下载技术分析.pdf

    这种技术可以显著提升下载速度,因为多个线程可以并行工作,实现对文件同时下载,而不会相互干扰。下载速度的提升与线程数量的增加呈正相关关系。在实际应用中,多线程下载技术被广泛应用于各种下载工具中,比如常见...

    Java简单程序(多线程的应用)

    在这个特定的“Java简单程序”中,多线程技术被用来模拟两个不同的物理运动:平抛运动和自由落体运动。这既展示了Java在处理并发操作时的灵活性,也揭示了它在科学计算和模拟中的应用。 平抛运动是指一个物体在垂直...

    实现Java高并发隔离 模拟

    1. **线程局部存储(ThreadLocal)**:Java中的`ThreadLocal`类提供了一种线程安全的方式,每个线程都有自己的副本,互不干扰。这样可以避免共享数据导致的并发问题,但需要注意内存泄漏的问题。 2. **锁...

    吃放水果 java(多线程)

    标题中的“吃放水果 java(多线程)”很可能是指一个Java GUI程序,它模拟了吃水果的场景,并利用多线程技术实现。这个程序可能是为了帮助初学者理解Java编程语言,特别是多线程的概念和应用。 在Java编程中,GUI...

    Java多线程 生产者-消费者模式

    `BlockingQueue`提供了一种线程安全的数据结构,它在生产者添加元素和消费者取出元素时会自动处理阻塞,使得生产和消费操作不会相互干扰。 在`MainThread.java`这个文件中,我们可能会看到如何创建一个`...

    Java 电梯模拟程序 很逼真的电梯模拟程序,模拟电梯上下楼,开门/关门,上下楼请求等,比较综合的一个实例,对JAVA爱好者很有帮助。

    Java电梯模拟程序是一个典型的控制论问题,它涉及到多线程、事件驱动编程、状态机设计模式等多个编程概念。下面将详细解析这个程序所涵盖的知识点。 1. **多线程**:电梯模拟程序中,电梯的运行、开门、关门以及...

    JavaQQ模拟功能

    - **并发处理**:JavaQQ需要处理多个客户端的并发连接,因此会用到多线程技术,确保每个连接都能独立执行,互不干扰。 - **线程同步**:在发送和接收消息时,可能需要线程同步机制,如synchronized关键字或wait/...

    交通灯设计(GUI)多线程

    在Java中,我们通常会为每个交通灯颜色创建一个单独的线程,这样它们可以在后台并行运行,而不会相互干扰。多线程技术使得程序能够同时处理多个任务,提高系统的效率和响应性。 为了实现GUI,我们可以利用Java的...

    java课程设计-------电梯模拟演示程序

    电梯模拟演示程序是一种基于Java编程语言的课程设计项目,它旨在帮助学习者理解和掌握面向对象编程、多线程以及事件处理等核心Java技术。在这个项目中,学生将构建一个能够模拟真实电梯运行情况的软件模型,包括电梯...

    线程实验java

    ThreadLocal则提供线程局部变量,每个线程都有其独立的副本,不会互相干扰。 3. **同步控制**:包括同步代码块(synchronized关键字)和同步方法,用于保证在多线程环境下的数据一致性。当多个线程访问同一资源时,...

    多线程模拟网络聊天室

    客户端也可能使用多线程,例如,一个线程用于接收服务端的消息,另一个线程用于处理用户的输入并发送消息,确保两者互不干扰。 【标签】:“多线程 模拟聊天室” 这两个标签突出了项目的重点技术。多线程是实现...

    基于Java的群聊系统

    在提供的压缩包文件“基于JAVA网络编程的模拟群聊系统源码”中,可以找到实现这些功能的具体代码。通过分析和学习这些源码,开发者可以深入了解Java网络编程和多线程应用的实践方法,为进一步开发更复杂的分布式系统...

    Java开发的Socket五子棋

    为了确保聊天内容的同步,开发者可能使用多线程技术,创建专门处理聊天信息的线程,避免与游戏逻辑线程相互干扰。 Java五子棋的图形化界面通常采用Java Swing或JavaFX库来构建。这些库提供了丰富的组件和工具,可以...

    模拟ATM取款机

    Java的Thread类和Runnable接口可以用来创建和管理多个执行线程,确保不同操作互不干扰。 8. **异常处理**: 任何与真实世界交互的应用都需要考虑错误和异常情况。项目中可能会有适当的异常处理代码,如当用户输入...

    多个模拟电梯程序(Java C C++ )

    通过以上分析,我们可以看到,无论是在Java、C++还是C中实现电梯模拟,都需要深入理解和应用并发编程、线程同步以及算法设计等核心概念。这个项目不仅是一个编程练习,也是提升系统设计和问题解决能力的好机会。

    java调用大漠插件源码,绑定游戏柄口,进行后台操作

    此外,可能还需要使用到Java的多线程技术,确保后台操作与用户界面的交互互不干扰。 关于“后台操作”,在Java中,可以通过创建后台线程来实现。使用`java.lang.Thread`或者`java.util.concurrent`包中的工具,比如...

    小球自由落体JAVA源码

    综上所述,"小球自由落体JAVA源码"项目涵盖了多线程编程、线程池管理、物理模拟、GUI设计、事件处理和并发控制等多个Java编程的关键知识点,是一个很好的学习和实践平台。通过深入理解并分析该项目,开发者可以提升...

Global site tag (gtag.js) - Google Analytics