java线程和界面问题,很简单,但我不会,求教

ECJAN 2011-12-23 03:07:43
//插入排序算法
class Insert extends Thread{
private int a[]= new int[10];
int n = a.length;
public Insert(){
for(int t=0;t<n;t++){
a[t]=t;
}
}

public void run(){
//Seven seven = new Seven();
Time start2 = new Time();
int i, j, temp;
int n = a.length;

for(i = 0; i < n - 1; i ++){
temp = a[i + 1];
j = i;
while(j > -1 && temp <= a[j]){
a[j + 1] = a[j];
j --;
}
a[j + 1] = temp;
}

//seven.t8.setText(start2.data()+"毫秒\n");
System.out.println("插入排序耗时:"+start2.data()+"毫秒\n");

}
}
//冒泡排序法线程
class Maopao extends Thread{
private int a[]= new int[10];
int n = a.length;
int flag =1;
int temp;
public Maopao(){
for(int t=0;t<n;t++){
a[t]=t;
}
}
public void run(){
Time start1 = new Time();
for(int i = 1; i < n && flag == 1; i++){
flag = 0;
for(int j = 0; j < n-i; j++){
if(a[j] > a[j+1]){
flag = 1;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
//eight.t9.setText(start1.data()+"毫秒\n");
System.out.println("冒泡排序耗时:"+start1.data()+"毫秒\n");
}
}

class Time{
private double start;
public Time(){
start = System.currentTimeMillis();
}
public double data(){
return System.currentTimeMillis() - start;
}

}

package TestSix;

import java.awt.*;

import javax.swing.*;
import java.awt.event.*;

public class Result extends Frame implements ActionListener,ItemListener{
//Frame f = new Frame();
private Panel p1 = new Panel(); //定义面板
private Panel p2 = new Panel();
private Panel p3 = new Panel();
public Choice num = new Choice(); //定义一个下拉选择框
private Button b = new Button("同时运行");
private Button exit = new Button("退出");
private Label field = new Label("请确定数组长度:");
private Label insert = new Label("插入排序:");
private Label bubble = new Label("冒泡排序:");
public TextField t1 = new TextField(30);
public TextField t2 = new TextField(30);

public Result(){
setTitle("多线程排序效率");
setSize(600,400);
setLayout(new BorderLayout());
add(p1,BorderLayout.WEST);
p1.setLayout(new GridLayout(3,1));
p1.add(insert);
p1.add(bubble);
add(p3,BorderLayout.NORTH);
p3.setLayout(new FlowLayout(FlowLayout.LEFT));
p3.add(field);
//p3.add(t1);
p3.add(num);
num.addItemListener(this);
num.add("10");
num.add("100");
num.add("1000");
num.add("10000");
num.add("100000");
p3.add(b);
b.addActionListener(this);
p3.add(exit);
exit.addActionListener(this);
add(p2,BorderLayout.CENTER);
p2.setLayout(new GridLayout(3,1));
p2.add(t1);
t2.setFont(new Font("", Font.TRUETYPE_FONT, 15));//设置字号
p2.add(t2);
t3.setFont(new Font("", Font.TRUETYPE_FONT, 15));//设置字号
setVisible(true); //窗口可视化
setLocationRelativeTo(null); //居中
addWindowListener(new WindowAdapter(){ //实现窗口右上角关闭按钮关闭窗口功能
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

public void itemStateChanged(ItemEvent c){
String name = num.getSelectedItem();
int len = Integer.parseInt(name);

}

public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("同时运行")){
Object o = new Object();
synchronized(o){
Insert insert= new Insert();
insert.start(); //1插入排序
}
synchronized(o){
Maopao maopao = new Maopao();
maopao.start(); //2冒泡排序线程就绪
}
}
if(e.getActionCommand().equals("退出")){
System.exit(0);
}
}


public static void main(String [] args){
new Result();
}
}



知道的大哥大姐,请联系我,老师说在run之前加个set方法什么,但是我不怎么懂,紧急的啊。谢谢你们了,我QQ384099566可以加好友,我也想多学习下!!
该怎么改呢,我就停在这里几个晚上搞不行,就差一步,个位好心大哥大姐教教我吧!
...全文
145 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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