摘要: java线程的两个特性:可见性和有序性多个线程之间是不能传递数据交互的,他们之间的交互只能通过共享变量来实现。在多个线程之间共享了count类的一个对象,这个对象时被创建在主内存(堆内存)每个线程都有自己的工作内存(线程栈)工作内存存储了主内存count对象的一个副本,当线程操作count对象时,首先从主内存复制count对象到工作内存中,然后执行代码count.count()该变了num值,最后用工作内存count刷新主内存count。当一个对象在多个内存中都存在副本时,如果一个内存修改了共享变量,其他线程也应该能够看到被修改后的值,此为可见性。由上述可知,一个赋值操作并不是一个原子性操作, 阅读全文
posted @ 2012-05-09 12:08 陕北蜂农 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1、sleep()方法会给其他线程运行的机会,而不考虑其他线程的优先级,因此会给较低线程一个运行的机会;yield()方法只会给相同优先级或者更高优先级的线程一个运行的机会。2、当线程执行了sleep(long millis)方法后,将转到阻塞状态,参数millis指定睡眠时间;当线程执行了yield()方法后,将转到就绪状态。 3、sleep()方法声明抛出InterruptedException异常,而yield()方法没有声明抛出任何异常 4、sleep()方法比yield()方法具有更好的移植性5、当线程调用了自身的sleep()方法或其他线程的join()方法,就会进入阻塞状态(该状 阅读全文
posted @ 2012-05-09 12:07 陕北蜂农 阅读(461) 评论(0) 推荐(1) 编辑
摘要: 1、给一个单词a,如果通过交换单词中的字母的顺序可以得到另外的单词b,那么b是a的兄弟单词,比如单词army和mary护卫兄弟单词,现在要给出一种解决方案,对于用户输入的单词,根据给定的字典找出输入单词有哪些兄弟单词。请具体说明数据结构和查询流程,要求时间和空间效率尽可能的高。2、线程和进程的区别及联系?如何理解线程安全问题?3、c和c++中如何动态分配和释放内存?他们的区别是什么?4、算法和程序设计网页爬虫在抓取网页时,从指定的url站点入口开始爬取这个站点上的所有url link,抓取到下一级link对应的页面时,网页对该页面上的link进行抓取从而完成深度遍历,为简化问题,我们假设每个页 阅读全文
posted @ 2012-05-09 12:06 陕北蜂农 阅读(216) 评论(0) 推荐(0) 编辑