社区
Java SE
帖子详情
关于线程
xiay365
2003-11-22 05:20:21
请问:有3个线程,一个对象和对象的一个方法method,如何使3个线程按照特定的顺序正确运行。比如:线程1执行method方法20次后,线程2才可以执行,线程2执行method方法20次后,线程3才可以运行。
...全文
29
11
打赏
收藏
关于线程
请问:有3个线程,一个对象和对象的一个方法method,如何使3个线程按照特定的顺序正确运行。比如:线程1执行method方法20次后,线程2才可以执行,线程2执行method方法20次后,线程3才可以运行。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiay365
2003-11-23
打赏
举报
回复
感谢各位,特别感谢bw78619(Genghis Khan),结贴。每人都有分
xiaohaiz
2003-11-23
打赏
举报
回复
请自己去查阅Active Object模式,对你问题的解决可能也有帮助。
这是一种实现线程的老技术,对于你要求序列执行的任务很合适。和COMMAND模式也可以结合在一起。
totti0115
2003-11-23
打赏
举报
回复
up,来学习了,今天晚上在来做回答
xiay365
2003-11-23
打赏
举报
回复
问题:
本程序只有两个类:
1、一个Talk类;
2、一个TalkingThread类。
对Talk类的编程要求,成员变量可自行定义,但只有下述三个函数:
1、构造函数;
2、main函数;
3、print(String Speaker,String Content),该方法内只有五行代码,如下:
for(int i=0;i<20;i++){ //讲二十次
System.out.println(Speaker+"第"+i+"次说话:"+Content+"\n");
out.println(Speaker+"第"+i+"次说话:"+Content+"\n");
out.flush();
}
其中,变量out的类型是PrintWriter。
对TalkingThread类的编程要求,TalkingThread类是一个线程类。
其他要求:在Talk类的main函数中构建三个TalkingThread类的线程对象,三个线程的名字分别是“线程1”、
“线程2”和“线程3”。三个线程使用同一个Talk类的对象,调用其print方法。编写好这两个类后,编译运行
的结果要求线程1、线程2、线程3依次按顺序“说话”,也就是说,线程1的20次“说话”完毕后,线程2才能够
说话;线程2的20次“说话”完毕后,线程3才能够说话。该运行结果也会存到和该类文件同一目录的文本文件
“test.txt”中。
本以为我提的问题可以解决我的问题,可是发现不是这样?麻烦楼上的,再帮我一下,我都考虑2天了,不想再考虑了,你帮我解决后,分数多给你一些,谢谢。
bw78619
2003-11-22
打赏
举报
回复
忘了写上wait()方法应当包含在try{
wait();
}catch(InterruptedException e){
}中。
线程间的通讯通过synchronzed,wait(),notify()一定可以解决,不要使用设置优先级的方法,线程调度依赖于操作系统,那样是不可靠的;
也不要使用suspend(),resume(),极易死锁,在java 2中已经被去掉了。
bw78619
2003-11-22
打赏
举报
回复
class JApp
{
private class Semophore
{
public int s;
}
private Semophore S1 = new Semophore();
private Semophore S2 = new Semophore();
public JApp()
{
new Thread() //thread one
{
public void run()
{
synchronized(S1){
for(int i=0; i<20; i++)
{
method();
S1.s++;
}
S1.notify();
}
}
}.start();
new Thread() //thread two
{
public void run()
{
synchronized(S1){
while(S1.s<20)
S1.wait();
synchronized(S1){
for(int i=0; i<20; i++){
method();
S2.s++;
}
S2.notify();
}
}
}
}.start();
new Thread() //thread three
{
synchronized(S2){
while(S2.s<20)
wait();
method();
}
}.start();
}
public void method()
{
//todo something
}
}
我编了个俄罗斯方块,里面有三个线程之间进行着同步与互斥,或许可以给你一些参考,需要的话发邮件给我 NicotineOne@yahoo.com.cn
broadoceans
2003-11-22
打赏
举报
回复
可以使用wait()和notify()方法,这是java推荐的方法。
如果你把你的程序拿来,我可以将你改一下;
xiay365
2003-11-22
打赏
举报
回复
另补充:我主要的疑问是线程之间的通信问题,如果线程很多,是不是每个线程都设置优先级呢?我对进程之间的并发运行和通信不是很了解,希望高手行家能通过本例给鄙人一点启示。希望找到一种通用一点的办法,并不失效率。我的意思是说如果10个线程的话,也可以用这种思想。
xiay365
2003-11-22
打赏
举报
回复
补充编程要求:1、不使用设置优先级。2、不使用Java不推荐的方法。因为设置优先级谁都会,而使用java不推荐的方法后果可想而知。希望能够将步骤写的更详尽些。一旦本人从中受到启发,立刻结贴散分。谢谢。
broadoceans
2003-11-22
打赏
举报
回复
让线程1处于运行态(start)而线程2、线程3处于休眠态(suspend()).当线程1mothod方法执行20次后,让线程2处于运行态(resume()方法)以此类推。
注意编译时要使用-deprecated 选项。
giftxi
2003-11-22
打赏
举报
回复
设置优先级,然后搞个计数器,应该就可以了。
java
线
程说法错误的是什么_【多选题】在java程序中,下列关于
线
程的说法错误的是() A.
线
程启动调用start方法 B.
线
程的主体是run方法 C.
线
程运行中调用sleep方法可以进入阻塞...
【多选题】在java程序中,下列关于
线
程的说法错误的是()A.
线
程启动调用start方法 B.
线
程的主体是run方法 C.
线
程运行中调用sleep方法可以进入阻塞状态 D. 定义
线
程只能通过定义类继承Thread类的方法更多相关问题等截面直杆受轴向拉力F作用发生拉伸变形。已知横截面面积为A,以下给出的横截面上的正应下列选项中,()是现代市场经济中各行各业所呼唤的一个基本原则,也是人际关系建立...
下列关于
线
程调度的叙述中,错误的是()。
下列关于
线
程调度的叙述中,错误的是()。 正确答案: B E 你的答案: A E F (错误) 调用
线
程的sleep()方法,可以使比当前
线
程优先级低的
线
程获得运行机会 调用
线
程的yeild()方法,只会使与当前
线
程相同优先级的
线
程获得运行机会 当有比当前
线
程的优先级高的
线
程出现时,高优先级
线
程将抢占CPU并运行 一个
线
程由于某些原因进入阻
关于
线
程访问另外一个
线
程的变量问题
关于
线
程访问另外一个
线
程的变量问题 之前帮别人调错,遇到一个错误,就是一个
线
程A访问另外一个
线
程B的成员变量,并且
线
程A在构造方法中有
线
程B的引用,但是无论
线
程A怎么获取
线
程B的成员变量都是 null,但是在
线
程B初始化中已经给成员变量赋值了。 后面解决了很久,没解决出来,然后刚好看到了 指令重排序问题 ,下面我们来看一个例子 public class Test { int a = 0; boolean flag = false; public void writer(){
下列关于
线
程调度的叙述中,错误的是()。----阿里巴巴2015校招研发在
线
下列关于
线
程调度的叙述中,错误的是()。 正确答案: B E 你的答案: A E F (错误) 调用
线
程的sleep()方法,可以使比当前
线
程优先级低的
线
程获得运行机会 调用
线
程的yeild()方法,只会使与当前
线
程相同优先级的
线
程获得运行机会 当有比当前
线
程的优先级高的
线
程出现时,高优先级
线
程将抢占CPU并运行 一个
线
程由于某些原因进入阻
关于
线
程和多
线
程,JAVA高并发程序设计
关于
线
程和多
线
程,面试里你所要知道的一切(一)主要整理一些关于
线
程的知识,尽量做到言简意赅,面试的时候用。
线
程前段时间找工作,很多次问到关于
线
程的问题,回答的时候就开启背书模式:
线
程是轻量级的进程,是程序执行的最小单位….现在想想,面试官要听的肯定不是这些,如果只知道这些,那还怎么守护达康书记的GDP。面试官:来说下
线
程吧。 程序猿:
线
程用的是Thread这个类和Runnable这个接口… 面试
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章