线程及问题解决
package 线程;
//创建线程方式一:继承Thread类,重写run()方法,调用start
//总结:注意线程开启不一定立即执行,有CPU调度执行。
//开启了会同时执行。是交替的,因为同一时间只能做一件事情,电脑是单核的
public class Thread1 extends Thread {
实现Runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法。
package 线程;
public class Runnable1 implements java.lang.Runnable {
总结:
继承Thread类:1.子类继承具备多线程的能力
2.启动线程:子类对象.start()
3.不建议使用:避免oop单继承局限性。
实现Runnable接口:1.实现Runnable具有多线程能力
2.启动线程:传入目标对象+Thread对象.start()
package 线程;
public class Ticket implements Runnable {
int ticketNub = 20;
并发:同一个对象被多个线程同时操作。
解决办法:队列 + 锁。
每个对象都有一个锁。
锁机制:synchronized
缺点:性能差
优点:安全性高
package 线程;
public class Ticket implements Runnable {
int ticketNub = 20;
就在抢票哪里加了一个关键字:synchronized

浙公网安备 33010602011771号