我正在试多线程,定义了一个新的线程类,代码如下
import com.klg.jclass.chart.beans.SimpleChart;
public class DrawThread implements Runnable {
Thread dt;
private SimpleChart sc1;
private String datastr;
public DrawThread() {
dt=new Thread(this,"Draw Thread");
}
public void begin(SimpleChart sc, String data){
this.sc1=sc;
this.datastr=data;
dt.start();
}
public void run(){
sc1.setData(datastr);
System.out.println("drawThread exiting");
}
}然后调用代码如下
DrawThread myThread=new DrawThread();建立实例,然后
try{
Thread.currentThread().sleep(400);
myThread.begin(simpleChart1,chartdata);
myThread.dt.join(); }catch(InterruptedException ex){
System.out.println(ex);
}
此代码前后都有算法计算,可是这个线程只调用一次,
且simplechart在这一次调用中也没有改变显示!
这是为什么?是线程调用错误?:(
import com.klg.jclass.chart.beans.SimpleChart;
public class DrawThread implements Runnable {
Thread dt;
private SimpleChart sc1;
private String datastr;
public DrawThread() {
dt=new Thread(this,"Draw Thread");
}
public void begin(SimpleChart sc, String data){
this.sc1=sc;
this.datastr=data;
dt.start();
}
public void run(){
sc1.setData(datastr);
System.out.println("drawThread exiting");
}
}然后调用代码如下
DrawThread myThread=new DrawThread();建立实例,然后
try{
Thread.currentThread().sleep(400);
myThread.begin(simpleChart1,chartdata);
myThread.dt.join(); }catch(InterruptedException ex){
System.out.println(ex);
}
此代码前后都有算法计算,可是这个线程只调用一次,
且simplechart在这一次调用中也没有改变显示!
这是为什么?是线程调用错误?:(
解决方案 »
- 能否用特殊方法让两个容器共用同一个组件
- JDBC 中文问题
- JAVA GUI客户端和SERVER通讯的问题
- 一个奇怪的SQL Server数据库联接的问题
- 在IBM服务器上配置JSP??
- JCreator Pro2.5 怎么才能注册呢?
- editplus怎么配置才能直接编译java的源代码?
- 浮点数怎么不能正确的输出呢????
- 请教Apache高手,为什么Apache JServ总出错 “not connect to host 127.0.0.1:8007”
- Sun Java2 SDK 的例子中有 *.jar文件,是什么类型的文件?双击还可以执行它
- jdom中的Element是表示节点的意思吗?Element和node有什么不同亚
- 打印时如何用程序去设置横打或竖打属性?
//不懂得话可以发短消息给我import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class WorkProgressBar extends JFrame
implements Runnable
{
public JProgressBar workCompleteShow;
public JButton startButton;
public void run()
{
for(int i=1;i<=100;i++)
{
try
{
Thread.currentThread().sleep(100);
workCompleteShow.setValue(i);
}
catch(InterruptedException e)
{}
}
startButton.setEnabled(true); } private class StartAction
implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
startButton.setEnabled(false);
Thread workThread=new Thread(WorkProgressBar.this);
workThread.start();
}
} public WorkProgressBar()
{
setTitle("进度条实例");
setSize(400,200);
JPanel progressBarPanel=new JPanel();
workCompleteShow=new JProgressBar(0,100);
progressBarPanel.add(workCompleteShow); JPanel startButtonPanel=new JPanel();
startButton=new JButton("start work");
startButton.addActionListener(new StartAction());
startButtonPanel.add(startButton); Container contentPane=getContentPane();
contentPane.add(workCompleteShow,BorderLayout.CENTER);
contentPane.add(startButtonPanel,BorderLayout.SOUTH); } public static void main(String[] args)
{
WorkProgressBar frame=new WorkProgressBar();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
谢谢你给我的那个小例子,但是那个小例子我感觉是不是只用了一个线程,
并没有让多个线程同时交叉运行?不知道我是不是理解得不好,
我的qq号是57973839,不知道能不能和你直接交流一下?