📄 right6_2.htm
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"><script language="JavaScript" type="text/JavaScript"><!--function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features);}//--></script></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td valign="top"> <table width="94%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF"> <tr> <td valign="top"> <p> <span class="pt9-black"><img src="../../../images/html/liti.gif" width="38" height="38" align="absbottom" title="例题"> <font color="000099">例6.4</font> <br> class stack{<br> int idx=0; //堆栈指针的初始值为0<br> char[ ] data = new char[6]; <font color="339900">//堆栈有6个字符的空间</font></span></p> <p class="pt9-black"> public void push(char c){<font color="339900"> //压栈操作</font><br> data[idx] = c; <font color="339900">//数据入栈</font><br> idx + +; <font color="339900">//指针向上移动一位</font><br> }</p> <p><span class="pt9-black"> public char pop(){ <font color="339900">//出栈操作</font><br> idx - -; <font color="339900">//指针向下移动一位</font><br> return data[idx]; <font color="339900">//数据出栈</font><br> }<br> }<br> <br> <a href="#" onClick="MM_openBrWindow('62f.htm','','width=720,height=360')">--观看动画--</a><br> <br> 两个线程A和B在同时使用Stack的同一个实例对象,A正在往堆栈里push一个数据,B则要从堆栈中pop一个数据。如果由于线程A和B在对Stack对象的操作上的不完整性,会导致操作的失败,具体过程如下所示:<br> <br> 1) 操作之前 <br> data = | p | q | | | | | idx=2</span></p> <p><span class="pt9-black"><br> 2) A执行push中的第一个语句,将r推入堆栈;<br> data = | p | q | r | | | | idx=2<br> <br> 3) A还未执行idx++语句,A的执行被B中断,B执行pop方法,返回q:<br> data = | p | q | r | | | | idx=1<br> <br> 4〕A继续执行push的第二个语句:<br> data = | p | q | r | | , | | idx=2<br> <br> 最后的结果相当于r没有入栈。产生这种问题的原因在于对共享数据访问的操作的不完整性。<br> </span> </p> </td> </tr> </table> </td> </tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -