`
嵇海波
  • 浏览: 13257 次
  • 性别: 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 模拟线程并发

    Java 模拟线程并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发

    java多线程模拟队列实现排队叫号

    java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号

    Java多线程设计模式上传文件

    Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    java模拟线程死锁

    java线程实践,了解线程死锁,同步问题

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

    java多线程编程总结

    Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 ...

    Java多线程编程总结

    Java 线程系列博文总结word化,编目如下,欢迎互相学习交流: Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:...

    java多线程ppt

    java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题

    java多线程笔记

    Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...

    java多线程经典案例

    java多线程经典案例,线程同步、线程通信、线程阻塞等经典案例

    java 多线程操作数据库

    一个java 多线程操作数据库应用程序!!!

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...

    java多线程的讲解和实战

    详细的讲解了java多线程的原理,并配有代码进行实战,适合java初学者和想对多线程有进一步了解的人。

    Java线程Java线程Java线程Java线程

    Java线程Java线程Java线程Java线程Java线程Java线程

    Java线程讲解Java线程讲解

    Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解

    JAVA单线程多线程

    单线程 单线程 单线程 单线程 单线程 单线程

    java多线程模拟处理银行的实时转账交易

    模拟实现多线程处理银行的实时转账交易,代码完整,可以完美运行~

    java多线程查询数据库

    java多线程并发查询数据库,使用线程池控制分页,并发查询。

    Java多线程知识点总结

    该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!

Global site tag (gtag.js) - Google Analytics