`
VIP_Samuel
  • 浏览: 2470 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAVA-THREAD-CONCEPT

    博客分类:
  • JAVA
 
阅读更多

1、使用多线程目的
     通常是为了提高并发性,这就不可避免的出现了线程同步的问题。

2、并发

     并发是指两个或多个事物在同一时间间隔内发生。简单的理解就是在同一段时间内发生了多个事情。

 3、同步

      同步中的同,不是同时的意思,而是指的协同、协调。同步中的步,指的是步骤、步调。合起来就是协同或协调步骤或步调。就是多个事物的步调遵循一定的规,而不是混乱不堪的。

4、线程的并发和同步

      在同一时间间隔内有多个线程在同时执行,就是线程的并发

      多个线程在逻辑上互有前因后果的关系,所以要对他们的执行顺序进行控制和协调,这就是线程同步

     系统为了提高性能和吞吐量,采用了多线程并发来解决,但同时也引入了线程同步的问题。可以这样理解线程并发和同步的因果关系。

如果线程在时间上能够区分开来,比如线程A先执行,在指定时间后,能够执行完毕或产生我们想要的结果,这时线程B使用线程A的结果作为输入开始执行。像这样通过时间能够严格的加以区分的不是特别复杂的线程关系,可以让线程休眠指定的时间来进行同步。就是采用sleep方法实现同步

如果线程在时间上不能区分开,但是在先后顺序上能够区分开,比如线程A先执行,我们不知道它什么时候能够执行完,但是我们知道它必须执行完后线程B才能开始执行。像这样在执行的先后顺序上能够严格的区分开的,而起前一个执行完,后一个才开始的,可以使用join方法来实现同步。

如果线程的执行比较复杂,交织在一起,那么只能通过等待和通知,即wait和notify方法来实现线程的同步,采用这种方式能够更加灵活的控制线程的步调,但是如果使用不慎的话会容易导致更大的问题。具体采用哪种同步方式要根据实际情况。如果你的同步过于发杂的话,最好还是重新进行算法和逻辑的设计,因为只有良好的设计,才可能会出现巧妙的实现,最终成就健康稳定的运行。

5、同步和异步举例

     同步(线程安全):A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求

不到,怎么办,A线程只能等待下去

    异步(非线程安全):A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程仍然请求的到,A线程无需等待

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics