启动线程的三种方法
1. 用匿名内部类
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(300);
System.out.println("敲代码");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
while (true) {
try {
Thread.sleep(500);
System.out.println("听歌");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.用一个类继承Thread类重写run方法
public class Write extends Thread {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
System.out.println("敲代码");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
Thread thread = new Write();
thread.start();
while (true) {
try {
Thread.sleep(500);
System.out.println("听歌");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.用另一个类继承Runnable接口重写run方法
public class Write implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(500);
System.out.println("敲代码");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread thread = new Write();
thread.start();
while (true) {
try {
Thread.sleep(500);
System.out.println("听歌");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 线程在启动是通过线程对象调用start()方法不能直接调用run方法
- 多线程同步可能对数据破环可以用synchronized (thread) {}线程锁进行