Java多线程同步机制在网络售票系统中的应用

2017-02-28 09:30彭娇
科技资讯 2016年29期

彭娇

摘 要:多线程的并发执行可以提高程序的执行效率,提高系统资源的利用率。然而在某些情况下,当多个线程同时访问一个变量时,如果处理不当,很可能发生混乱。而多线程同步机制的引入则可以保证多个线程可以独立运行、互不干扰。该文主要使用Java的多线程同步机制模拟网络售票过程。

关键词:多线程 同步机制 网络售票

中图分类号:TP312 文献标识码:A 文章编号:1672-3791(2016)10(b)-0018-02

多线程机制的并发性,使得人们能够在同一台计算机上同时完成网页浏览、图片欣赏和语音通话等不同任务。多线程是Java语言的一个重要特点,可以使Java程序同时完成不同的任务,而同步机制则保证这些任务在运行过程中互不干扰。以网络售票为例,使用多线程同步机制模拟售票过程,可实现多售票点同时售票,且互不干扰。

1 Java多线程机制的使用

1.1 Java中的多线程

Java语言内置了对多线程的支持,可以同时并行运行多个相对独立的线程。多线程机制是由Java虚拟机JVM来实现的。每当运行Java程序时就会启动JVM,当JVM加载main()方法代码时,就会启动一个“主线程”。如果在main()方法中创建了其他线程,这些线程就会从主线程中独立出来,而JVM就要在主线程和其他新生线程之间轮流切换,以保证每个线程都有机会使用CPU资源,获得该线程代码的执行,完成相关的任务。

1.2 多线程机制的实现

在Java语言中,可以通过继承Thread类的子类或实现Runnable接口来创建线程。

Java不允许多继承,只能继承一个类,第一种方法在开发中限制较大,不适合多个线程共享资源;第二种方式既可以继承其他类,也可以实现其他接口,灵活性比较好,更方便实现资源共享。多售票点共同售票的过程就可以采用第二种方式实现,每个售票点的售票活动都可视为一个线程。但是从多线程运行情况来看,会发现可能会出现一些问题,当其中一个售票点售票过程中,另一售票点也在出售同一张票;或票已售完,还有售票点在售票。为了避免这些错误,可以引入多线程的同步机制。

2 多线程的同步机制的使用

2.1 多线程同步机制的概念

多线程同步机制,即在一个线程访问共享变量时,其他线程不允许访问,这样既解决了线程的同步问题也保证了系统的运行效率。Java中使用synchronized来完成多线程同步机制。具体使用方式为:

synchronized (对象){

代码

}

2.2 多线程同步机制在网络售票系统中的应用

在网络售票系统中,可以使用多线程同步机制描述網络售票过程。每个售票点的活动均可视为一个线程,待售的票为共享的资源。在开始售票时,须先取得该票的独享控制权,售票完成后通知其他售票点该票已售出,在售票过程中其他售票点无权使用共享资源。

线程启动获得CPU之后,将会执行run方法,其中售票的操作使用synchronized关键字进行修饰,意味着其他线程需等待,直到synchronized修饰的语句结束。运行结果如图1所示。

3 结语

Java多线程同步机制的引入,使得多线程对共享资源互斥访问。该文以网络售票系统为例,通过多线程同步机制的使用实现了多售票点对共享票数的同步互斥操作,避免了同一张票被多个售票点卖出或票已售完继续售票的问题。合理使用多线程的同步机制不仅可以提高共享资源的安全性,还可以提高系统的执行效率。

参考文献

[1] 耿乡义,张跃平.Java程序设计实用教程[M].北京:人民邮电出版社,2015.

[2] 吴红萍.Java的多线程机制分析与应用[J].软件导刊,2014(1):114-116.

[3] 李青,王江平,朱浩.Java多线程编程的教学研究[J].计算机教育,2015(12):65-68.