线程同步锁的对象和内容有什么关系?

chdgcxy 2017-11-12 11:17:08
请教一下, 下面一个线程添加元素, 一个线程遍历元素, 在同步锁中加List和随便加一个对象有什么区别?都可以达到效果, 是不是同步锁的
对象和内容没关系?

public class Test {

public static void main(String[] args) {
List<Integer> list = new ArrayList();
Thread1 t1 = new Thread1(list);
Thread2 t2 = new Thread2(list);

t1.start();
t2.start();

}

}
class Thread1 extends Thread{
List<Integer> list;

public Thread1(List<Integer> list) {
this.list = list;
}
public void run(){
add();
}
//往集合里添加10个1-99的随机数
public void add(){
synchronized (list) {
try {
Random rd = new Random();
for (int i = 0; i < 10; i++) {
int num = rd.nextInt(100);
list.add(num);
Thread1.sleep(100);
System.out.println("添加:" + num);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class Thread2 extends Thread{
List<Integer> list;

public Thread2(List<Integer> list) {
this.list = list;
}
public void run(){
list();
}
//遍历集合元素
public void list(){
synchronized (list) {
try {
Thread2.sleep(100);
for (int i : list) {
System.out.println("遍历:" + i);
}
System.out.println("遍历完毕");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chdgcxy 2017-11-12
  • 打赏
  • 举报
回复
guohezhibingzu 2017-11-12
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
[quote=引用 1 楼 chdgcxy 的回复:]
[/quote]
李德胜1995 2017-11-12
  • 打赏
  • 举报
回复
引用 1 楼 chdgcxy 的回复:

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧