`
fantasybei
  • 浏览: 37902 次
  • 性别: Icon_minigender_1
  • 来自: 农村进沪务工人员
社区版块
存档分类
最新评论

Item 66

阅读更多
public class StopThread {
    private static boolean stopRequest;

    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(new Runnable(){
            public void run(){
                int i = 0;
                while(!stopRequest)
                    i++;
            }
        });
        thread.start();
        Thread.sleep(1000);
        stopRequest = true;
    }
}

synchronized的作用不仅仅是控制线程互斥的访问某个对象的方法或者block,而且能够确保之前线程对该对象的修改可见,如上面的例子,按一般来看,应该过1秒左右就应该停止了,但是实际上,它不会停止,因为主线程对stopRequest变量的修改,在另一个线程中不可见。
分享到:
评论
1 楼 darrendu 2013-09-24  
stopRequest,改成volatile或原子类型呢

相关推荐

    Effective Java 3rd edition(Effective Java第三版英文原版)附第二版

    Item 66: Use native methods judiciously Item 67: Optimize judiciously Item 68: Adhere to generally accepted naming conventions 10 Exceptions Item 69: Use exceptions only for exceptional conditions ...

    RecyclerView显示不同item

    本篇文章将深入探讨如何在RecyclerView中显示不同类型的item,包括水平和垂直布局。 首先,我们来理解RecyclerView的基本结构。一个RecyclerView由Adapter、LayoutManager和ViewHolder组成。Adapter是数据源,负责...

    c66AK2H14 EVM 原理图

    - **Item**:列出了修改项目的编号。 - **Description**:描述了具体的修改内容。 - **Page**:指出修改内容所在的页码。 通过以上内容可以看出,c66AK2H14 EVM 原理图文档包含了丰富的技术细节,包括电路板的物理...

    weatherScrapy-master_python_doll66u_joinedeno_

    - 在Scrapy中,可以使用`Item`和`Item Pipeline`来定义数据模型并处理数据,如去重、清洗、存储等操作。 5. **异常处理与反爬策略** - 爬虫需要考虑如何处理网络错误、服务器限制等问题,可能使用`try-except`...

    ocp考试047题库

    这段 SQL 语句试图创建一个名为 `order_item` 的表,并为其定义了三个字段:`order_id`、`item_id` 和 `qty`。其中,`order_id` 和 `item_id` 组合起来作为主键,并且使用了一个索引来加速对该主键的访问。但是,该...

    DD1024.zip

    - `QGraphicsScene`是图形对象的容器,它可以包含多个图形元素,如矩形、圆形等,这些元素都是`QGraphicsItem`的子类。 2. **QGraphicsItem**: 在1024游戏中,`QGraphicsRoundRectItem`和`AutoMoveItem`都是`...

    PHP网络爬虫脚本

    foreach ($data as $item) { $objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $item['field1']); $objPHPExcel->getActiveSheet()->setCellValue('B' . $row, $item['field2']); $row++; } // 保存...

    EasyXRecyclerView-fdc45aca66b6cedcd7dee10e68a9ed803e704ebe.zip

    主要提供了简单易用强大的RecyclerView库,包括自定义刷新加载效果、极简通用的万能适配器Adapter、万能分割线、多种分组效果、常见状态页面、item动画效果、添加多个header和footer、侧滑、拖拽、Sticky(黏性)...

    Unity3D插件FancyScrollView,UI滑动列表

    《Unity3D插件FancyScrollView:打造动态UI滑动列表》 Unity3D作为一款强大的游戏开发引擎,被广泛应用于各种游戏类型的制作。在UI设计中,滑动列表是不可或缺的一部分,它允许用户浏览和交互大量数据。...

    EXT简体中文参考手册(PDF&CHM电子档)

    各种Item的类型 57 Item属性 57 在UI中摆放菜单 58 Menu的分配方式: 58 练一练 60 动态添加菜单按钮到Toolbar 61 更方便的是 61 下一步是 62 模板(Templates)起步 62 第一步 您的HTML模板 62 第二步,将数据加入...

    new_holytelecom修美化改版

    用来替代中国电信强制...http://hi.baidu.com/%C8%ED%BC%FE__%B8%DF%CA%D6/blog/item/1e0bf66dc71729eb42169487.html 为了美观起见,我没有加作者信息,请原作者见谅。 另:本软件完全无毒,360报毒请将其加入信任。

    实用与学习软件系列(11) ZTCAI 画法几何二三维建模工具(含源码)

    交互式CAD系统,有二维,三维绘图命令。目标为机械设计教学软件。二维系统用GDI/GDI+实现,三维用OpenGL实现。二维系统功能全面,三维系统...http://hi.baidu.com/wangfeiyuer/blog/item/c2eb93122bc66d045aaf53ba.html

    OPC UA的采集客户端,可配置版本.

    Item ID,Access Path,数据数型,可用 modbus.dep_海*冰水機_66.機組啟動,"",Boolean,TRUE modbus.dep_海*冰水機_66.Haier_制冷時蒸發器側出水溫度設定,"",Double,TRUE modbus.dep_海*冰水機_23.機組啟動,"",Boolean,...

    VB.zip_5轴vb_VB控制_drop down data combo_listbox VB_vb combobox ie

    62、如何事先选定 ListBox 或 ComboBox 的某一个 Item? 63、模拟 IE 的 地址栏:智慧型下拉式 Combo 64、如何让 ListBox 同一列显示二栏以上的栏位? 65、如何控制二栏以上 ListBox 之各栏位宽度? 66、ListBox ...

    Ext 学习中文手册

    各种Item的类型 57 Item属性 57 在UI中摆放菜单 58 Menu的分配方式: 58 练一练 60 动态添加菜单按钮到Toolbar 61 更方便的是 61 下一步是 62 模板(Templates)起步 62 第一步 您的HTML模板 62 第二步,将数据加入...

    软件测试中的前期测试用例编写规范和流程

    流程测试用例src="http://imgsrc.baidu.com/baike/abpic/item/d66b7e59181e2b6a2834f0d1.jpg">测试用例软件测试中的前期测试用例编写规范和流程测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件...

    实验4群体类和群体数据.doc

    5. 实现数组类 Array,具有成员函数 Sort(void),Search(const T& item),Insert(const T& item),Delete(const T& item) 通过这个实验报告,我们可以了解到群体类和群体数据的基本概念和实现方法,并掌握...

    android部分控件使用代码

    首页显示的是控件列表,每个item点开后是其详细用法。包括:Button的使用、单选框RadioButton用法、复选框CheckBox用法、UI属性整合、EditText编辑框的基本用法、menu菜单、Intent、TextView以及TextView的稍微高级...

    实验四同步及互斥Linux实验报告.doc

    1. `insert_item(item)`:将生产的产品放入缓冲区,需要在互斥锁保护下进行。 2. `remove_item(item*)`:从缓冲区移走一个产品,同样需要互斥访问。 3. `producer(param)`:生产者线程,负责生成产品并调用`insert_...

Global site tag (gtag.js) - Google Analytics