文档章节

线程

 梦想家Peng
发布于 2016/03/03 10:29
字数 319
阅读 3
收藏 0

线程的同步
-----------------------------------

当存在多个线程同时修改一个值时,可能会出现先后修改的现象,也可能出现同时修改的现象。在有些场景中,可能只允许先后依次修改,而不允许同时修改。
解决线程同步的安全问题,可以使用互斥锁,使用到的关键字是synchronized,使用方式是用synchronized将需要互斥的代码框住,其中,synchronized后的括号内必须是多个线程共同访问的对象,例如:

synchronized (obj) {
    if (account.amount >= 800) {
        System.out.println(name + "检查到余额为" + account.amount
                + ",开始取钱 ... ...");
        account.amount -= 800;
        System.out.println(name + "取款完成!余额为" + account.amount + "!");
    } else {
        System.out.println(name + "检查到余额不足,取钱失败!");
    }
}

synchronized也可以用于修饰方法,如果使用这样的语法,必须保证该方法所在的类的对象,在多个线程之间是共享的。


线程的其它方法
-----------------------------------
setName() / getName():设置/获取线程的名称
getId():获取线程的ID
setPriority() / getPriority:设置/获取线程的优先级,表现为优先级越高,被分配到系统资源进行运算的单次时长可能越长,取值为1-10,可以使用常量表示:MIN_PRIORITY NORM_PRIORITY MAX_PRIORITY
Thread.currentThread():获取当前线程的对象

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 34
码字总数 15605
作品 0
深圳

暂无文章

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
54分钟前
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
5
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部