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

空中雪花 2011-10-11 05:24:36
写十个线程每个线程循环加1在控制台显示出线程的名字 和加完之后得到的数
...全文
152 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
脉动 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
  • 打赏
  • 举报
回复
胡子哥 正解
zl3450341 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]
胡子哥这个头像不如上个头像给力啊
阳明 to life 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zl3450341 的回复:]

很显然,2楼的代码淌有考虑线程同步的问题啊。
[/Quote]
大胡子貌似用的五笔
zl3450341 2011-10-11
  • 打赏
  • 举报
回复
很显然,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();
}
}
}
阳明 to life 2011-10-11
  • 打赏
  • 举报
回复
有时间要求什么的么
就加个同步就行了吧

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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