多线程2

来源:互联网 发布:php 输出源代码 编辑:程序博客网 时间:2024/05/22 17:30

同步代码块:

 synchronized(对象:锁旗志)

                {

                             需要被同步的代码;

                 }

同步的前提:

1.必须由两个两个以上的线程

2.必须是多个线程使用同一个锁

(必须保证有一个线程在执行)


好处:解决了多线程的安全问题

弊端:多个线程需要判断较为消耗资源


同步作为修饰符:使用的锁是 this

如果同步函数被静态修饰:则锁为所在类的字节码文件对象  类名 . class

 

 wait ( ) ;

 natify ( ) ;

 notifyAll ( ) ;

都使用在同步中,因为要对持有监视器(即锁)的线程操作。

所以要使用同步中,因为只有在同步才具有锁。


为什么这些操作线程的方法要定义Object类中呢?

因为这些方法在操作同步中线程时,都必须要标识他们所操作只有的锁。

只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。

不可以对不同锁中的线程进行唤醒。


也就是说,等待和唤醒必须是同一个锁。

而锁可以使任意对象,所以可以被任意对象调用的方法定义Object类中。


下面是一个单实例的多线程同步情况的标准格式。


线程很好理解,可是用好线程就有点难。很多规则,其中最重要的就是安全性的问题。


0 0
原创粉丝点击