扬州城市论坛 百科 进程线程间如何同步(线程间的同步方法)

进程线程间如何同步(线程间的同步方法)

要了解线程同步的方法,首先要知道什么是线程,然后知道线程是如何创建的,再实现线程同步。什么是线程?线程是计算机程序运行的最小单位。当计算机程序运行时,将存在一个或多个线程。下面我会用java代码解释线程间的同步方法。

首先,我们要带着问题去学习。为什么线程是同步的?在java中,允许多线程并发控制。当多个线程同时操作同一个资源时,很可能造成数据不准确,相互冲突。比如我们买火车票,某次列车只剩一张火车票,恰好A和B同时在买票。在不同步的情况下,甲和乙可能都收到购买成功的结果,他们买的是同一张票,这显然是不合理的。这在同步的情况下是不可能的。因此增加了同步锁,避免在线程完成操作前被其他线程调用,从而达到资源的唯一性和准确性。我用的是NetBeans,大概是非主流。现在我大多用myeclipse/eclipse。如图所示:

创建新项目。我称之为Thread_demo。根据心情取个名字就行了。

同步方法:synchronized关键字修改的方法是该方法的同步代码:publicsynchronizedvoid方法名(){要同步的内容.}如图所示:

同步代码块:synchronized关键字修饰的语句块是方法块的同步代码:synchronized(object){要同步的内容.}如图所示:

线程同步对计算机来说代价很大。我们应该尽量避免使用同步,或者尽可能缩小同步的范围。如果可以同步代码块,就不要同步整个方法。附上线程同步的应用:packagethread _ demo/* * * * @ author admin */public class thread _ Demo { class bank { privateinaccount=100;publicintgetAccount(){ return account;}/* * *同步方法实现* @ param money */public synchronized Voidad(int money){ account=money;}/* * *同步代码块实现* @ param money */public void add 1(int money){ synchronized(this){ account=money;} } } classCreateThreadimplementsRunnable { privateBankbank;public create thread(bank bank){ this . bank=bank;} @ Overridepublicvoidrun(){ for(inti=0;i10I){ bank . add(10);System.out.println(i '账户余额:' bank . get account());}}}/* *构建一个线程,调用内部类*/publicfoidexthread(){ bank bank=new bank();createthread new _ thread=new createthread(bank);System.out.println(“线程1”);thread thread 1=new thread(new _ thread);thread 1 . start();system . out . println(“Thread 2”);thread thread 2=new thread(new _ thread);thread 2 . start();} publistaticvoidmain(String[]args){ Thread _ demod=new Thread _ Demo();TD . exethread();}}}如图:1:添加同步关键词的结果,即同步的结果;2:不添加同步关键词的结果,也就是不同步的结果。

特别提示

这只是大java中线程同步的一种形式~

读者朋友,如果有什么帮助,请用你的小手给个赞,投个票!

本文来自网络,不代表本站立场,转载请注明出处:https:

进程线程间如何同步(线程间的同步方法)

扬州城市论坛后续将为您提供丰富、全面的关于进程线程间如何同步(线程间的同步方法)内容,让您第一时间了解到关于进程线程间如何同步(线程间的同步方法)的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。