线程间同步的方法
想了解线程同步的方法就得先知道什么是线程,然后线程怎么创建的,再然后就是去实现线程的同步。
什么是线程?
线程是电脑程序运行时的最小单元,一个电脑程序运行会有一个或多个线程存在。
下面我会以java代码来讲解线程间的同步方法。
操作方法
(01)首先我们得带着问题去学习,线程为何会有同步一说?在java中是允许多线程并发控制,当有多个线程同时操作同一个资源时,很有可能导致数据不准确,相互之间产生冲突。打个比方:我们买火车票时某个车次的火车票只剩一张,而正好A和B同时进行购买该车票,在不同步的情况下A和B可能会都收到购买成功的结果,他们购买到的是同一张票,这显然不合理。而在同步的情况下是不可能出现该种情况的。所以加入同步锁是为了避免在该线程没完成操作之前不被其他线程调用,从而达到资源的唯一性和准确性。我这用的是NetBeans估计非主流了,现在大多用的是myeclipse/eclipse。如图:
(02)新建一个项目,我这就叫Thread_demo了。名字看自己心情命名就好。
(03)同步方法:synchronized关键字修饰的方法即为方法的同步代码:public synchronized void 方法名() {需要同步的内容...}如图:
(04)同步代码块:synchronized关键字修饰的语句块即为方法块的同步代码:synchronized(object){需要同步的内容...}如图:
(05)线程的同步对电脑的开销是很大的,我们应该尽量避免同步的使用,或者说能缩小同步的范围就尽量减少,能同步代码块的就不要去同步整个方法。下面附上线程同步的运用:package thread_demo;/**** @author Admin*/public class Thread_Demo {class Bank {private int account = 100;public int getAccount() {return account;}/*** 同步方法实现* @param money*/public synchronized void add(int money) {account += money;}/*** 同步代码块实现* @param money*/public void add1(int money) {synchronized (this) {account += money;}}}class CreateThread implements Runnable {private Bank bank;public CreateThread(Bank bank) { = bank;}@Overridepublic void run() {for (int i = 0; i < 10; i++) {(10);tln(i + "账户余额:" + ccount());}}}/*** 建立线程,调用内部类*/public void exeThread() {Bank bank = new Bank();CreateThread new_thread = new CreateThread(bank);tln("线程1");Thread thread1 = new Thread(new_thread);t();tln("线程2");Thread thread2 = new Thread(new_thread);t();}public static void main(String[] args) {Thread_Demo td = new Thread_Demo();hread();}}如图:1:为加synchronized关键词的结果,即同步得到的结果2:为不加synchronized关键词的结果,即不同步得到的结果
特别提示
这只是大java实现线程同步的其中一种形式哦~
各位看官如有帮到你的还请动动你的小手指点个赞投个票哟!
-
485转以太网怎么设置
门禁考勤系统作为控制人员出入,考核工作人员考勤情况的数字化管理系统得到了广泛的应用,对于公司管理工作具有积极的意义。由于RS-485总线使用简单,方便易用,相当部分的门禁考勤系统使用的数据传输线路采用RS-485总线作为其传输线路。对于处于同一栋办公楼中的办公...
-
如何刷京东单
京东商城下单方法,在京东商城刷单方法操作方法(01)首先打开京东商城客户端,在里面找到自己想要购买的商品,然后点击打开商品,选择购买件数单击“加入购物车”(02)现在提示已经成功加入购物车,点击购物车就可以进行付款了,点击“购物车”(03)选中你要结算的物品,在前面对话框...
-
Python中如何应用split
我们用python处理字符串的时候经常会需要分割字符串,这个时候我们会用到split。那么你真的会用它吗?下面小编来给大家分享一下split的使用以及注意事项操作方法(01)首先我们在python环境中先来建立一个字符串,如下图所示(02)然后我们调用split方法,已冒号作为分隔符,如...
-
怎么在qq空间制作腾讯认证图标
在自己的空间添加腾讯认证图标,图标无法下载的找我拿QQ704396659操作方法(01)1.先下载【腾讯认证标识】:单击右键,复制图片就可以。。。(02)2.上传空间:点击“设置”(图中标注的地方),再选择“修改资料”,再选择“空间资料”(在左下方)。接下来,让空间名称的前面留一个空格,用Q...