| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 860 人关注过本帖
标题:线程的问题
只看楼主 加入收藏
lgdcky
Rank: 2
等 级:论坛游民
威 望:5
帖 子:576
专家分:18
注 册:2006-8-5
结帖率:33.33%
收藏
 问题点数:0 回复次数:13 
线程的问题
我在学线程的时候在API中只发现了暂停线程的方法却没有找到恢复线程的方法,找到的也只是个过时的,有没有什么其他恢复线程的方法啊??
搜索更多相关主题的帖子: 线程 
2006-11-10 11:14
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

使用wait和notify


可惜不是你,陪我到最后
2006-11-10 11:59
苦中乐
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-9-4
收藏
得分:0 
斑竹说的很好了。

2006-11-10 13:00
lengxin
Rank: 1
等 级:新手上路
帖 子:174
专家分:0
注 册:2006-9-14
收藏
得分:0 
是啊

2006-11-10 13:12
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
suspend()挂起线程,resume()恢复线程
..不过我在看API的时候..这两个方法已经是过时的了...

我用了另外一个方法来实现挂起和恢复线程的工作...
[CODE]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MultiThread extends JFrame implements Runnable{
private JTextField jtfShowNumber;
private JButton jbSuspend,jbResume;
private int count=0;
private volatile boolean isSuspend; //是否挂起的一个标志

public MultiThread(){
super("挂起和恢复线程");
Container container = this.getContentPane();
container.setLayout(new FlowLayout());

jtfShowNumber = new JTextField(15);
jtfShowNumber.setEditable(false);
jtfShowNumber.setHorizontalAlignment(JTextField.CENTER);
jbSuspend = new JButton("挂起");
jbSuspend.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setSuspend(); //设置挂起线程
}
});
jbResume = new JButton("恢复");
jbResume.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setResume(); //设置恢复线程
}
});
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,1,3,3));

panel.add(jtfShowNumber);
panel.add(jbSuspend);
panel.add(jbResume);
container.add(panel);

this.setSize(200,150);
Dimension dimension = this.getToolkit().getScreenSize(); //得到屏幕的大小
//设置JFrame的搁置.
this.setLocation((dimension.width-getSize().width)/2,(dimension.height-getSize().height)/2);

this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭时退出程序
}

public void run(){
try{
while(true){
waitThread(); //当挂起.就进行该过程的while
count++;
String temp = Integer.toString(count);
jtfShowNumber.setText(temp);
waitThread(); //当挂起.就进行该过程的while
Thread.sleep(200); //当前线程休眠200毫秒
}

}catch(InterruptedException e){
//抛出异常.忽略
}
}

private void waitThread() throws InterruptedException{
while(isSuspend){
Thread.sleep(200);
}
}

private void setSuspend(){ //挂起线程
isSuspend = true;
}

private void setResume(){ //恢复线程
isSuspend = false;
}

public static void main(String[] args){
MultiThread mthread = new MultiThread();
Thread t = new Thread(mthread);
t.start();
}
}
[/CODE]

我的msn: myfend@
2006-11-10 13:30
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
辛苦写了code...顶..

我的msn: myfend@
2006-11-10 13:34
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你 这种方式也不错,不过,最方便的还是wait和notify

可惜不是你,陪我到最后
2006-11-10 13:54
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
wait和notify
...我现在还没有看到...呵呵..继续学习.

我的msn: myfend@
2006-11-10 13:57
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
好好看,不过,JDK1.5推出了线程池的支持,有空可以研究一下
java.util.concurrent包

可惜不是你,陪我到最后
2006-11-10 13:59
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
嘿嘿..好的..谢谢了.

....怎么搞得这个贴子是我发的那样..

我的msn: myfend@
2006-11-10 14:01
快速回复:线程的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021911 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved