多线程实现方法
1. 继承 Thread 类
2. 实现 Runnable 接口再 new Thread(YourRunnableOjbect)
实例:
package com.wjj.test;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
public class Clock extends JFrame {
private JPanel contentPane;
private JButton btnNew;
/**
* Launch the application.主方法
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
//实例化
Clock frame = new Clock();
//开始运行
frame.init();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Clock() {
setTitle("Clock");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 200, 150);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
btnNew = new JButton("New button");
contentPane.add(btnNew, BorderLayout.CENTER);
}
public void init() {
InternalClock clock = new InternalClock(btnNew);
clock.start();
new Thread(new Move(this)).start();
}
//继承抽象类
class InternalClock extends Thread {
JButton button = null;
public InternalClock(JButton button) {
this.button = button;
}
public void run() {
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
while (true) {
button.setText(format.format(new Date()));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//实现Runnable接口方式
class Move implements Runnable {
JFrame frame = null;
public Move(JFrame frame) {
this.frame = frame;
}
@Override
public void run() {
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((int) dimension.getHeight(), (int) (dimension
.getHeight()));
for (int i = (int) dimension.getHeight(); i > (int) (dimension
.getHeight()
- frame.getHeight() - 40); i--) {
frame.setLocation(
(int) dimension.getWidth() - frame.getWidth(), i);
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(2000);//休眠2秒后继续运行
} catch (InterruptedException e) {
e.printStackTrace();
}
frame.dispose();
}
}
}