关于synchronized和assert 1.为了实现进程同步,用一个boolean型的静态变量作为互斥锁不行吗?为什么非要用synchronized实现所谓的同步方法以达到原子操作的目的?2.assert语句为什么不能简单的用if语句来实现?LZ不才,还请各位不吝赐教~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.是线程同步,不是进程同步吧2.涉及到Java内存模型,不是简单的处理下信号的问题。3.原子操作不仅仅是变量的赋值和读取 java内存模型,看来我菜在这了,何谓java内存模型? 楼主能否告诉我怎么用一个boolean型的静态变量作为互斥锁来实现线程同步?小弟不懂assert语句知识用来调试程序的,不开断言时不起作用,但是if语句是必须执行的,没必要。 哥们,不要自称小弟啊~我也就22,以下是我在看多线程时,联系进程的信号量机制所产生的想法private static boolean locked=false;private static boolean isEmpty=true;public void Read(){ if(locked==false&&isEmpty==false) { locked=true;//临界资源即将被使用 ... //临界资源正在被使用 isEmpty=true;//临界资源被读取后的置空标记 locked=false;//临界资源已被使用完毕 }}public void Write(){ if(locked==false&&isEmpty==true) { locked=true; ... isEmpty=false; locked=false; }} assert是验证啊,写test的时候用的。if是判断,又不验证 楼主:如果只用boolean类型来标记的话,是实现不了的。A线程访问时boolean="false"这时B线程也会这样执行的。B线程进来后,A线程再将boolean设为“true”已经起不到作用了。assert它是可以设置的也只是在测试的时候起作用,等到项目正式运行的时候。就不起作用了。相当于一个开关把它关闭了。而if无论什么时候都是要执行的。 如何把做好的项目打包? 帮忙看看断言程序 启动本地应用程序,如何进行交互! 急求Java RTSP服务器端 代码 java窗口的关闭问题! 应把super看作对“当前对象”的引用,而不是引用超类的实例。 大家都进来看看吧!求助! 从服务器端把数据下载保存在客户端? <select>的双击事件如何写 java下有没有直接删除整个目录的方法,而不管下面是否有文件和子目录? 用dom4j 取xml节点属性问题,跪求高手解答 判断一个数是否是素数
2.涉及到Java内存模型,不是简单的处理下信号的问题。
3.原子操作不仅仅是变量的赋值和读取
private static boolean isEmpty=true;
public void Read()
{
if(locked==false&&isEmpty==false)
{
locked=true;//临界资源即将被使用
... //临界资源正在被使用
isEmpty=true;//临界资源被读取后的置空标记
locked=false;//临界资源已被使用完毕
}
}
public void Write()
{
if(locked==false&&isEmpty==true)
{
locked=true;
...
isEmpty=false;
locked=false;
}
}