Java的多线程
多线程有两种方法:Thread方法 和 Runnable接口
Thread方法 与Runnable 方法的最主要的区别就是 共不共用资源
举个买票的例子:
Thread方法的买票:
public class TicketThread extends Thread{
private int ticket = 10;
@Override
public void run() {
for (int i = 1; i <= 10 ; i++) {
if (this.ticket > 0){
System.out.println(Thread.currentThread().getName() + "买票——" + this.ticket--);
}
}
}
}
main方法:
public static void main(String[] args) {
TicketThread window1 = new TicketThread();
window1.setName("1号窗口");
TicketThread window2 = new TicketThread();
window2.setName("2号窗口");
window1.start();
window2.start();
//线程不共有资源
}
结果如图:
Runnable接口的买票:
public class TicketRunnable implements Runnable{
private int ticket = 10;
@Override
public void run() {
for (int i = 1; i <= 10 ; i++) {
if (this.ticket > 0){
System.out.println(Thread.currentThread().getName() + "买票——" + this.ticket--);
}
}
}
}
main方法:
public class TicketRunnableTest {
public static void main(String[] args) {
TicketRunnable window = new TicketRunnable();
Thread window1 = new Thread(window, "window1");
Thread window2 = new Thread(window, "window2");
window1.start();
window2.start();
//runnable 共用一个资源
}
}
执行结果:
Thread方法的不同线程调取的资源是各自独立的。
Runnable方法的不同线程调用的是同一组资源。