线程间同步的方法

想了解线程同步的方法就得先知道什么是线程,然后线程怎么创建的,再然后就是去实现线程的同步。
什么是线程?
线程是电脑程序运行时的最小单元,一个电脑程序运行会有一个或多个线程存在。
下面我会以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) { this.bank = bank; } @Override public void run() { for (int i = 0; i < 10; i++) { bank.add(10); System.out.println(i + "账户余额:" + bank.getAccount()); } } } /** * 建立线程,调用内部类 */ public void exeThread() { Bank bank = new Bank(); CreateThread new_thread = new CreateThread(bank); System.out.println("线程1"); Thread thread1 = new Thread(new_thread); thread1.start(); System.out.println("线程2"); Thread thread2 = new Thread(new_thread); thread2.start(); } public static void main(String[] args) { Thread_Demo td = new Thread_Demo(); td.exeThread(); } } 如图: 1:为加synchronized关键词的结果,即同步得到的结果 2:为不加synchronized关键词的结果,即不同步得到的结果

(0)

相关推荐

  • 华为手机如何启用云空间同步联系人功能

    现在有很多人在使用华为手机,有些新用户不知道如何启用云空间同步联系人功能,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步根据下图箭头所指,找到并点击[设置]图标.2. 第二步进入 ...

  • Java创建线程的两个方法

    操作方法 01 Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线 ...

  • Word和Excel两者数据同步的方法

    在Word文档编辑时,需要用到Excel工作表中的数据资料,但是当word和Excel中某一个数据发生改变后,我们就不得不寻找对应的部分来修改,如果涉及的数据量较大,那工作的强度也会大大提升。其实,W ...

  • iPhone与多台电脑(多个iTunes)同步的方法

    iPhone的同步功能本来就一般,而如果你有两台或者两台以上的电脑,那就会让人更郁闷。因为当你的iOS设备,在这些不同的电脑切换的时候,系统总会提醒你,这台设备已经与其他电脑同步之类的话,那么如何结果 ...

  • 360云盘同步出现异常怎么办?360云盘同步版不同步解决方法

    360云盘同步版不同步怎么办?小编将在下文提供360云盘同步版不能同步解决方法,明明是“同步版”为什么却不能同步呢?大家可以一起来了解一下。 360云盘同步版会双向,实时同步您的文件;360云盘是单向 ...

  • Win8系统设置时间自动同步的方法

    相信有很多使用Win8系统的新手朋友对系统的操作界面和操作方式还不太熟悉,更别说为系统时间设置自动同步了,设置时间自动同步可是一件很重要的事情,时间不一致的话,经常会出现一些不必要的麻烦.所以,下面, ...

  • 微信电脑版语音不能同步怎么办?解决微信电脑版最近的语音不会同步的方法

    很多人喜欢使用微信电脑的版本,可是有的人出现了电脑版本的“最近的语音不会同步”,那该怎么办呢? 解决微信电脑版最近的语音不会同步的方法 出现了这样的情况,可以尝试一下我的方式,首先就是点击左下角的“设 ...

  • PPT2013怎么制作补间动画? ppt补间动画制作方法

    ppt中想要制作一个补间动画,该怎么制作部件动画效果呢?下面我们就来看看详细的教程. 一.直线补间 1.选中要制作动画的图形——点击动画——添加动画——动作路径——直线.点击一下该图形,这时马上出现垂 ...

  • 快手举报直播间的具体方法

    我们知道直播间内容不当是可以举报的,那么快手直播间可以怎么举报呢?接下来就跟小编一起来看一下吧.快手举报直播间方法:1. 首先打开下图所示的直播间,可以看到左上角有主播的头像,直接点击头像.2.接着点 ...