A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个问题在我在编码时总是感觉无从入手,想不到这一点;另外还有一个同步代码块放的位置:即synchronized(){},    {}中括住哪些语句合适

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 zczcyc0201 于 2012-10-10 12:07 编辑

1.sleep()放在需要线程暂停的地方

比如,你想每隔5秒打印一个1,无限循环,可以写成这样:
while(true)
{
Thread.sleep(5000);//单位是毫秒
System.out.println(1);
}

2.多个线程操作共享数据时,一个线程还没执行完,另一个线程参与进来,会造成数据的错乱,就需要用到synchronized(){}, 用了synchronized(){}同步代码块以后,一个线程在执行的时候,其他线程无法参与进来,保证了数据安全。使用前提,需要有两个或两个以上线程

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
sleep()我感觉应该是在多线程编程的时候放,具体放在那,看你是要主线程睡着还是要thread线程睡着了,要根据实际情况而定。
synchronized(){}放在多线程运行的代码中,括号中括住的是共享的资源{就是多线程共享的资源。}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
一般情况下不需要用sleep的只有在你需要让当前代码停顿的时候再写sleep sleep接受一个整数参数  单位是毫秒
synchronized(){} 在多线程中用的  ,被其包含的代码只能同时被一条线程执行,这就是线程安全吧

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
当你想冻结一个线程一段时间时用sleep(),就是在线程执行过程中放在想让线程暂时“停止”的地方
同步代码快synchronized(this){}就括住具体执行的线程中的某个方法中的内容就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马