首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于 synchronized 的疑问解决方案

2012-02-22 
关于 synchronized 的疑问关键字synchronized 是同步的意思吧,在多个线程的时候(继承Thread类或者实现Runn

关于 synchronized 的疑问
关键字synchronized 是同步的意思吧,

在多个线程的时候(继承Thread类或者实现Runnable接口的时候)用到,这我可以理解


但在并没有继承Thread类或者实现Runnable接口的时候, 为什么在有些函数面也加呢??

可以不可以解释一下,什么情况下需要.........


[解决办法]
synchronized是跟据对像来说的。比如你在一个类里叫ClassA,里面有方法A()是synchronized的,那你在另的地方new了个ClassA对像,然后启动很多线程调用ClassA对像的A()方法,这时就只有一个进程能进入A()方法,因为A()方法是synchronized的,其它线程都阻塞了。
不知道我这样说楼主明不明白。
[解决办法]
synchronized是跟据对像来说的。比如你在一个类里叫ClassA,里面有方法A()是synchronized的,那你在另的地方new了个ClassA对像,然后启动很多线程调用ClassA对像的A()方法,这时就只有一个进程能进入A()方法,因为A()方法是synchronized的,其它线程都阻塞了。
不知道我这样说楼主明不明白。
[解决办法]
synchronized是跟据对像来说的。比如你在一个类里叫ClassA,里面有方法A()是synchronized的,那你在另的地方new了个ClassA对像,然后启动很多线程调用ClassA对像的A()方法,这时就只有一个进程能进入A()方法,因为A()方法是synchronized的,其它线程都阻塞了。
不知道我这样说楼主明不明白。
[解决办法]

引用楼主 duzhonghua 的帖子:
关键字synchronized 是同步的意思吧,

在多个线程的时候(继承Thread类或者实现Runnable接口的时候)用到,这我可以理解


但在并没有继承Thread类或者实现Runnable接口的时候, 为什么在有些函数面也加呢??

可以不可以解释一下,什么情况下需要.........


[解决办法]
synchronized是跟据对像来说的。比如你在一个类里叫ClassA,里面有方法A()是synchronized的,那你在另的地方new了个ClassA对像,然后启动很多线程调用ClassA对像的A()方法,这时就只有一个进程能进入A()方法,因为A()方法是synchronized的,其它线程都阻塞了。
不知道我这样说楼主明不明白。
[解决办法]
说明要同步那个方法,没有规定说synchronized 一定在继承Thread或者实现Runnable的接口中才能使用!

你想在那里使用,就能使用!
[解决办法]
synchronized 没听说必须在线程类里边使用.
只要可能需要进行同步的地方都可以使用它.
[解决办法]
synchronized锁的是资源(数据,对象等),不是代码段
比如两个人就两根筷子,一个人在用的话,另外一个人就不能用
不是说一个人在吃饭,另外一个人就不能吃饭(他可以用其它的工具)

热点排行