`

不正确的访问共享资源

 
阅读更多
看下面一段代码,这段代码采用了模板设计模式

public abstract class IntGenerator {
         private volatile boolean canceled=false;
	
	public abstract int next();
	
	public void cancel()
	{                                                                           this.canceled=false;
	}
	
	public boolean isCanceled()
	{
	      return this.canceled;
	}
	
	
}
========================
//创建一个偶数生成类
public class EvenGenerator extends IntGenerator{

	private int currentEvenValue=0;
	
	@Override
	public int next() {
		// TODO Auto-generated method stub
		++currentEvenValue;
		++currentEvenValue;
		
		return currentEvenValue;
	}
	
	public static void main(String[] args)
	{
		EvenChecker.test(new EvenGenerator());
	}
	
	
}
===========================
创建一个测试类,启动10个线程,查看是否正确的访问资源
public class EvenChecker implements Runnable{
	private IntGenerator generator;
	private final int id;
	
	public EvenChecker(IntGenerator generator,int id) {
		// TODO Auto-generated constructor stub
		this.generator=generator;
		this.id=id;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(!generator.isCanceled())
		{
			int val=generator.next();
			if(val%2!=0)
			{
				System.out.println(val+ " is not even!");
				
generator.cancel();//直到找到奇数时停止
			}
			else
			{
				//System.out.println(val+" is even!");
			}
		}
		
	}
	
	
	
	public static void test(IntGenerator gp,int count)
	{
		
		System.out.println("Press Ctrl+C to Exit");
		ExecutorService exec=Executors.newCachedThreadPool();
		for(int i=0;i<count;i++)
			exec.execute(new EvenChecker(gp,i));
	}
	
	
	public static void test(IntGenerator gp)
	{
		test(gp,10);
	}
	
	
	

}

//测试的结果是能打印出很多奇数,访问资源出错的原因是:next()方法本身不是原子方法,可能在一个线程对它进行第一个++操作之后,第二个线程已经取到它的值了
分享到:
评论

相关推荐

    多域之间资源共享访问(AGDLP策略)

    通过正确地配置这些组件,可以实现安全、可靠的资源共享访问。 多域之间资源共享访问的优点是可以实现资源共享、提高工作效率和降低成本。但是,也需要注意安全问题,确保域之间的信任关系和访问权限的安全。 在...

    您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。拒绝访问解决方法

    症状:安装了防火墙(包括WINXP系统自带的防火墙),出现无法Ping通,或者是访问共享资源的时候提示"XXX无法访问"、"您可能没有权限使用网络资源"、"请与这台服务器的管理员联系以查明您是否有访问权限"、"找不到...

    网络刺客II(查找主机共享资源)

    在找到了局域网中的所有主机资源以后,就可以通过网络刺客II取得访问共享资源的资格。在左下角的小窗口中选择相应的主机并展开它,在相应的共享资源中右击鼠标按键,或者打开“共享资源”菜单选择相应的选项,将需要...

    基于Java的共享学习资源系统的设计与实现【附源码】

    JSP标签可以访问数据库、记录用户选择信息。 JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。本系统将采用JSP技术,运用HTML和CSS实现各个功能的网页界面,与对应的java程序连接实现各个功能。 (2)...

    解决局域网共享文件 拒绝访问

    方便快捷地解决局域网内主机之间访问的权限设置问题,还有一些GHOST系统在正常的访问权限设置不起作用时,资源可以解决这样的问题

    电脑共享设置的几点注意事项

    在默认状态下,我们之所以能够通过网上邻居窗口访问到目标共享主机中的共享资源,主要是在共享主机中安装启用了“微软文件和打印机共享”功能组件后,Windows系统会自动创建一个默认隐藏共享IPC$,通过这个隐藏共享...

    大势至共享文件审计系统

    7、通过账户、IP和MAC地址三重绑定来限定客户端的电脑访问共享文件情况,一旦不符合绑定规则,禁止其访问共享文件。 8、限制外来电脑或未经授权的电脑访问共享文件,也即必须加入到许可访问共享文件的白名单电脑...

    您可能没有权限使用网络资源_请与这台服务器的管理员联系以查明您是否有访问权限

    (原因是:有时xp的guest是不允许访问共享的) (6)取消“使用简单文件共享”方式:资源管理器\工具\文件夹选项\查看\去掉“使用简单文件共享(推 荐)”前面的勾。 (7)工作组名称一致。 (8)勾选“Microsoft网络的...

    如何设置FTP服务器共享访问权限.docx

    FTP服务器共享访问权限设置 FTP(File Transfer Protocol)服务器是计算机网络中的一个重要组件,用于在网络中传输文件。然而,在设置FTP服务器时,需要对信息上传目录的访问权限进行合适设置,以确保每一个部门的...

    内网无法共享解决方法

    二、无法访问——“您没有权限使用网络资源,找不到网络路径。”  即提示找不到网络路径,最大的怀疑对象就是Windows防火墙,大多数情况下是它在捣鬼,不妨请对方将计算机的Windows自带的防火墙暂时关闭一下. 三...

    linux之线程同步一.doc

    这样可以避免多个线程同时访问共享资源而导致数据不一致。 2. 信号量(Semaphore):信号量是一种用于控制并发访问的同步机制,它通常用于限制同时访问共享资源的线程数量。信号量可以是一个非负整数,用于表示可用...

    网络刺客2软件下载网络刺客2软件下载帮助你搜索共享主机

    在找到了局域网中的所有主机资源以后,就可以通过网络刺客II取得访问共享资源的资格。在左下角的小窗口中选择相应的主机并展开它,在相应的共享资源中右击鼠标按键,或者打开“共享资源”菜单选择相应的选项,将需要...

    Java各种锁的使用方式及其对比

    Java中使用锁是为了在多线程程序中保证同步访问共享资源的正确性和一致性。在多线程环境下,多个线程可以同时访问共享资源,这可能导致数据的不一致性和错误的结果。例如,如果两个线程同时更新同一个变量,那么可能...

    局域网共享(经典).doc

    Windows网上邻居互访的基本条件: 1) 双方计算机打开,且设置了网络共享资源; 2) 双方的计算机添加了 "Microsoft 网络文件和打印共享" 服务; 3) 双方都正确设置了网内IP地址,且必须在一个网段中; 4) 双方的...

    C#访问远程主机资源的方法

    实现访问远程主机的共享目录中的一个文件的解决方法:  一、调用Net use命令 // 使用方法: //if (Connect(192.168.1.48, 用户名, 密码)) //{ // File.Copy(@\192.168.1.48共享目录 est.txt, @e:\test....

    win7通过samba实现与linux的资源共享

    默认情况下,Windows 7 无法正常访问 NAS 或者 Samba 服务器上的共享文件夹。原因在于从 Vista 开始,微软默认只采用 NTLM v2 协议的认证回应消息了,而目前的 NAS 系统和 Samba 还只支持 LM 或者 NTLM。 解决办法...

    workgroup无法访问的解决方法.docx

    解决Workgroup无法访问的问题 Workgroup是Windows操作系统中的一个网络组件,允许多台计算机组成一个工作组,以便于资源共享...本文提供的解决方法可以帮助用户快速解决Workgroup无法访问问题,提高网络资源共享效率。

    XP局域网共享设置图文教程.doc

    当然你可以自己设置磁盘里 面的任意文件夹为共享文件) 打开资源管理器-右键D盘-共享和安全-左键点选打开 注意:经过上两个图的共享资源设置,偶们进入对方的机子只有"只读"权限,只能看不 能动的哦! 这可是XP...

    Win7与XP局域网共享.doc

    Win7 与 XP 局域网共享 Win7 与 XP 局域网共享是指在 Win7 和 XP 操作系统之间实现文件夹共享的过程。在这个过程中,我们需要在 Win7 和 XP 系统中...* 在访问共享文件夹时,需要输入正确的 IP 地址,避免访问错误。

    全网首发一键批量共享文件夹可以批量设置共享并编辑共享和安全权限软件.exe

    全网首发,一键共享文件夹,更牛逼的是可以批量设置共享并编辑共享...5. 共享文件后不能正常访问?可能是系统相关策略有影响,一键修改相关策略。这里只设置最常规的一些限制,有需要添加其他功能的,可以评论区反馈。

Global site tag (gtag.js) - Google Analytics