4.2日java学习总结
实现线程的两种方式
在java中主要提供两种方式实现线程,分别为继承java.lang.Thread类与实现java.lang.Runnable接口。
(1)继承Thread类
Thread类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread实例
(2)实现Runnable接口
线程的生命周期
线程的休眠
线程的优先级
线程同步
代码
import java.awt.*;
import java.util.Random;
import javax.swing.*;
public class SleepMethodTest extends JFrame {
private Thread t;
private static Color[] color= {Color.BLACK,Color.BLUE,Color.CYAN,Color.GREEN,Color.ORANGE,Color.YELLOW,Color.RED,Color.PINK,Color.LIGHT_GRAY};
private static final Random rand=new Random();
private static Color getC() {
return color[rand.nextInt(color.length)];
}
public SleepMethodTest() {
t=new Thread(new Runnable() {
int x=30;
int y=50;
public void run() {
while(true) {
try {
Thread.sleep(100);
}catch(InterruptedException e) {
e.printStackTrace();
}
Graphics graphics=getGraphics();
graphics.setColor(getC());
graphics.drawLine(x,y,100,y++);
if(y>=80) {
y=50;
}
}
}
});
t.start();
}
public static void main(String[] args) {
init(new SleepMethodTest(),100,100);
}
public static void init(JFrame frame,int width,int height) {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width,height);
frame.setVisible(true);
}
}
import java.awt.BorderLayout;
import javax.swing.*;
public class InterruptedSwing extends JFrame{
Thread thread;
public static void main(String[] args) {
init(new InterruptedSwing(),100,100);
}
public InterruptedSwing() {
super();
final JProgressBar progressBar=new JProgressBar();
getContentPane().add(progressBar,BorderLayout.NORTH);
progressBar.setStringPainted(true);
thread=new Thread(new Runnable() {
int count=0;
public void run() {
while(true) {
progressBar.setValue(++count);
try {
thread.sleep(1000);
}catch(InterruptedException e){
System.out.println("当前线程中断");
break;
}
}
}
});
thread.start();
thread.interrupt();
}
public static void init(JFrame frame,int width,int height) {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width,height);
frame.setVisible(true);
}
}