社区
Java SE
帖子详情
请教一个线程控制的问题.
jassonlu
2005-11-28 04:43:56
各位大大:
程序中的工作,通过循环来做的话,太费时间,所以决定用线程来实现,大概上百个.
但是我不想100个线程同时进行, 希望让他们5个5个的运行,其他的都wait(), 一个运行完毕后唤醒等待队列中的下一个。不知道该如何控制,请指教,最好给出简单的代码
...全文
126
10
打赏
收藏
请教一个线程控制的问题.
各位大大: 程序中的工作,通过循环来做的话,太费时间,所以决定用线程来实现,大概上百个. 但是我不想100个线程同时进行, 希望让他们5个5个的运行,其他的都wait(), 一个运行完毕后唤醒等待队列中的下一个。不知道该如何控制,请指教,最好给出简单的代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jassonlu
2005-11-29
打赏
举报
回复
结算
jassonlu
2005-11-29
打赏
举报
回复
已经解决, 一开始5个运行,其他全部wait(),一个运行完毕后在RUN()的最后唤醒wait队列中的一个进入运行,现在看来系统吃得消, 而且等待队列中有多少个对系统有影响吗? 只要同时运行的不超过5个,我看就没问题.
散分~~~
yuzl32
2005-11-28
打赏
举报
回复
系统资源受不了.
suprwx
2005-11-28
打赏
举报
回复
我觉得同时生成100个线程是不可取的,gemouzhi(gemouzhi)说的有道理
liu_you
2005-11-28
打赏
举报
回复
import java.util.Date;
public class Manager
{
int free=5;
public synchronized AbThread createThread()
{
if(free>0)
{
use();
return new AbThread(this);
}
else
{
_wait();
return null;
}
}
public synchronized void use(){free--;}
public synchronized void free(){free++;}
public void _wait()
{
synchronized(this)
{
try
{
wait();
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
public void _notify()
{
synchronized(this)
{
notify();
}
}
public static void main(String[] args)
{
Manager man=new Manager();
for(int i=0;i<100;)
{
AbThread t=man.createThread();
if(t!=null){t.start();i++;}
}
}
}
class AbThread extends Thread
{
AbThread(Manager man){this.man=man;}
Manager man;
public void run()
{
System.out.print(this);
System.out.println(""+new Date());
try
{
Thread.sleep(1000);
}catch(InterruptedException ex)
{
ex.printStackTrace();
}
man.free();
man._notify();
}
}
执行通过.
gemouzhi
2005-11-28
打赏
举报
回复
就在run方法结束的时候通知啊。进程是主动方
或者你可以继续使用这个线程。
jassonlu
2005-11-28
打赏
举报
回复
但是如何知道 之前创建的那些进程哪几个运行完毕了呢?
gemouzhi
2005-11-28
打赏
举报
回复
我的意思是5个中其中只要有运行完的,就通知创建新线程,全创建起来不好。
jassonlu
2005-11-28
打赏
举报
回复
5个5个的运行的话,有的先完成,有的后完成,浪费时间啊!
我想用 wait() notifyAll()来控制他们,但是不会做 :(
请继续指教
gemouzhi
2005-11-28
打赏
举报
回复
那你还不如5个5个的运行,何必wait
JAVA多
线程
精讲下
通过本门课程的学习你可以深刻理解Java多
线程
的原理及实现运行机制,深刻学习多
线程
的生命周期、调度、
控制
等内容。 多
线程
精讲下课程内容涵盖如下:l
线程
的同步(
线程
安全
问题
)l
线程
的死锁l ...
android 按钮
控制
线程
,关于手机安卓-
线程
测试
如题,我测试时,只执行了一次,第二次卡住时间到后,没有调用超时判断,特
请教
一下,代码如下:'/**********
线程
控制
*******Dim 检测
线程
Thread.SetShareVar "是否卡主", false检测
线程
= Thread.Start(test_thread...
python如何在所有
线程
结束后执行最后操作_python,多
线程
_python如何让后台
线程
执行必要的操作后再退出?,python,多
线程
- phpStudy...
我写了
一个
web服务,服务启动的时候会另起
一个
线程
去扫描特定目录的文件入库,并且把文件名及扫描的位置记入redis。文件大小会变动(其他程序尾部写入)文件数目也会变动我不知道什么时候变动所以这个扫描的
线程
是每...
System.Timers.Timer 多
线程
问题
[转]
已解决
问题
] System.Timers.Timer 多
线程
,同时首次进 声明: System.Timers.Timer timer = new System.Timers.Timer(); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); button按钮事件: ...
java是内核
线程
还是用户
线程
_三分钟基础:用户级
线程
和内核级
线程
有什么区别?...
来源:tobe的呓语作者:tobe小白最近在学习多
线程
编程。网上关于多
线程
的资料很多,小白很快就把
线程
...对于小白的
问题
,小明总会耐心解答:“
线程
里面这两个概念确实比较难理解,我先给你讲用户级
线程
吧。”用户级...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章