黑马程序员技术交流社区

标题: 线程 方面 [打印本页]

作者: 王飞    时间: 2012-7-16 23:41
标题: 线程 方面
一个进程中至少有一个线程
实现了Runnable接口后,里面的变量就只有run方法里面的一份,也就相当于所以实现了Runnable接口类的对象都共享一份数据


同步锁:同步有两种表现形式:同步代码快和同步函数
因为同步函数需要被对象调用。所以同步函数都有一个所属对象引用。就是this。
所以同步函数使用的锁是this。

如果同步方法是静态的:因为没有对象的调用,那么使用的锁是该方法所在类的字节码文件对象。 类名.class

同步的前提:如果没有同步就看有没有符合下面要求
1,必须要有两个或者两个以上的线程。-------------------------------没有那就和单线程没什么区别咯,也就失去了同步的意义
2,必须是多个线程使用同一个锁。-----重点            
必须保证同步中只能有一个线程在运行。

同步的利与弊:
利:解决了多线程的安全问题。--------------------------------------------例如不会对同一个对象操作完后另一个使用者不知道的情况
弊:多个线程需要判断锁,较为消耗资源,   ------------------------------------------------每次进入同步的时候都要判断里面有没有程序在运行,有就进不去(因为没有进去的锁),直到里面的程序运行完把锁释放掉才行,这个时候拿上锁的就可以进去了,然后在锁上,让后面的进不来

synchronized(对象) :--------------------------------  此时的对象可以是任意对象,但是同一个同步使用的一定是同一对象
同一个锁上的被等待线程,可以被同一个锁上notify唤醒。不可以对不同锁中的线程进行唤醒。--------------------------------------------也就是说,等待和唤醒必须是同一个锁。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2