1.多线程
Thread类继承创建代码例子
import java.util.Calendar;
public class example526 {
public static void main(String args[]) {
TimePrinter tp1=new TimePrinter(1000,"Fast Guy");//创建对象tp1
tp1.start();//启动线程
TimePrinter tp2=new TimePrinter(3000,"Slow Guy");//创建对象tp2
tp2.start();
}
}
class TimePrinter extends Thread{//直接继承Thread类实现多线程
int pauseTime;
String name;
public TimePrinter(int i, String string) { //构造方法,方法名和类名相同
// TODO Auto-generated constructor stub
pauseTime=i;
name=string;
}
public void run() {
while(true){
try {
System.out.println(name+": "+Calendar.getInstance().getTime());//Calendar.getInstance().getTime()获取系统时间
Thread.sleep(pauseTime);//睡眠时间让出另一个使用
} catch(Exception e){ }//捕获异常
}
}
}
龟兔赛跑例题编写记录
package itcast_01;
import java.awt.*;
import java.awt.event.*;
public class Animal extends Canvas implements Runnable{
String name;
int speed;
int sleepTime;
final int distance=700;
int pos=0;
public Animal(String n,int s,int t) {
name=n;speed=s;sleepTime=t;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame m=new Frame("龟兔赛跑");// 创建一个窗体
m.setLayout(new GridLayout(3,1));//设置该窗体为3,1的网格
final Animal a1=new Animal("乌龟",1,40);//final在修饰成员变量的时候要赋初始值
final Animal a2=new Animal("兔子",4,160);//创建两个同时的线程对象
Button b=new Button("开始");
m.add(a1);m.add(a2);m.add(b);
m.setSize(780,200); m.setVisible(true);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new Thread(a1).start();
new Thread(a2).start();
a1.repaint();a2.repaint();//repaint重绘方法
}
});
}
public void paint(Graphics g) {
g.drawString(name, 20, 20);
}
@Override
public void run() {
// TODO Auto-generated method stub
long startTime=System.currentTimeMillis();
Graphics g=getGraphics();
while(pos<distance) {//未达到总目的
for(int k=0;k<(int)(1+Math.random()*3);k++) {
pos+=speed;
if(pos>distance) pos=distance;
g.fillRect(50, 15, pos, 10);
}
try {
Thread.sleep(sleepTime);
}catch(InterruptedException e) {}
}
long spend=System.currentTimeMillis()-startTime;
javax.swing.JOptionPane.showMessageDialog(null, name+":花费"+spend+"毫秒");//弹出文本框信息
pos=0;
repaint();
}
}
[^1]:所有例子学习来自,中国大学生MOOC慕课如需转载,请注明出处,否则将追究法律责任。