今天 面试 考了 一道 线程 题 ,本人对线程 方面 不了解 请教高手

空中雪花 2011-10-11 05:24:36
写十个线程每个线程循环加1在控制台显示出线程的名字 和加完之后得到的数
...全文
133 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
脉动 2011-10-12
看看,多看,才能长见识
回复
王二北 2011-10-12
再整个两个小孩交替数数的例子:

class TestThread extends Thread
{
public static int count=1 ;

public static Object obj = new Object();

public TestThread(String name){
super(name);
}
public void run(){
synchronized(obj){
for(int i=0;i<10;i++){
System.out.println(currentThread().getName()+"说:我数"+count++);
obj.notifyAll();
try{
obj.wait();
}catch(Exception e){
System.out.println("错误了");
}
}
obj.notifyAll();
}
}


public static void main(String[] args)
{
//两个小孩
for(int i= 1;i<3;i++){
new TestThread("小孩"+i).start();
}
}

}

回复
王二北 2011-10-12
那就写个带同步的例子,所谓线程同步,并不像它名字所说的那样,而是让线程排队去使用共享的资源,如何实现排队呢,就要利用同步监视器,也就相当于一把锁,这个锁必须是唯一的,一群人上厕所,只有一个坑,怎么办,按次序,谁进去之后,立刻就把锁锁上,以防后面的人趁你还没脱裤子时,就一屁股蹲坑上了。

class TestThread extends Thread
{
public static int count ;

public TestThread(String name){
super(name);
}
public void run(){
//线程循环十次
for(int i = 0;i<10;i++){
//加锁同步
synchronized(TestThread.class){
System.out.println(currentThread().getName()+"||count="+count++);
}
}
}
public static void main(String[] args)
{
//开启十个线程
for(int i= 0;i<10;i++){
new TestThread("线程"+i).start();
}
}

}
回复
dragonsky_w 2011-10-12
那么希望LS的各位大哥可以解释一下,怎样解决这个线程同步的问题呢????最近也在搞这个进程与线程的问题……
回复
王二北 2011-10-11
[Quote=引用 3 楼 zl3450341 的回复:]
很显然,2楼的代码淌有考虑线程同步的问题啊。
[/Quote]
大胡子,我上面已经说明了,不知道他的具体要求,所以就写了个最简单的例子,是最简单的例子啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,最简单,aaaa啊啊啊啊啊啊啊啊啊啊啊啊
回复
bohe_198878 2011-10-11
胡子哥 正解
回复
[Quote=引用 5 楼 caolong0210 的回复:]

引用 3 楼 zl3450341 的回复:
很显然,2楼的代码淌有考虑线程同步的问题啊。

胡子哥这个头像不如上个头像给力啊
[/Quote]
上一次管理员说不和谐让我给换了。


[Quote=引用 4 楼 zhouyuqwert 的回复:]

引用 3 楼 zl3450341 的回复:

很显然,2楼的代码淌有考虑线程同步的问题啊。

大胡子貌似用的五笔
[/Quote]
呃被你发现了,我一直都是用五笔的。
回复
哎呦喂哈 2011-10-11
[Quote=引用 3 楼 zl3450341 的回复:]
很显然,2楼的代码淌有考虑线程同步的问题啊。
[/Quote]
胡子哥这个头像不如上个头像给力啊
回复
杰克和仙豆 2011-10-11
[Quote=引用 3 楼 zl3450341 的回复:]

很显然,2楼的代码淌有考虑线程同步的问题啊。
[/Quote]
大胡子貌似用的五笔
回复
很显然,2楼的代码淌有考虑线程同步的问题啊。
回复
王二北 2011-10-11
不知道具体什么要求,写个最简单的例子吧


class TestThread extends Thread
{
public static int count;
public TestThread(String name){
super(name);
}
public void run(){
//每个线程循环十次
for(int i=0;i<10;i++){
System.out.println(currentThread().getName()+"|| count="+count++);
}
}
public static void main(String[] args)
{
//十个线程
for(int i = 0;i<10;i++){
new TestThread("线程"+i).start();
}
}
}
回复
杰克和仙豆 2011-10-11
有时间要求什么的么
就加个同步就行了吧
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2011-10-11 05:24
社区公告
暂无公告