1、通过继承thread类的方式创建线程类,重写run()方法
2、通过调用Runnable接口实现线程创建
2.1 两个线程占用两个资源
2.2 两个线程共用一个资源
3、sleep休眠的使用(例如地图的刷新)
每次for循环休眠1000毫秒
4、join方法来抢占资源。等当前线程结束后其他线程才能进行
这里加上join,始终会先运行 getNamd()+“正在运行!”
mt.join(1)表示线程结束后1毫秒其他线程才能运行
5、线程优先级
6、 线程同步(银行账户存取款过程中不运行有其他进程干扰)
对存款方法进行同步:
对取款内容进行同步:
7、线程通信
get和set方法加同步。
运行之后发现不是一生产一消费的对应关系
设置变量flag,当flag为true时,表示容器里有东西,可以进行消费,否则进行生产。
生产跟消费方法中添加notifyAll方法,促使程序不会形成死锁。