1.线程的特性
1.抢占式运行
2.资源共享
3.线程是进程的最小的基本单位
2.并行和并发
并行:多个线程同时进行
并发:多个线程同时发生,轮流交替执行
3.创建线程的两种方式
1.继承Thread 重写run方法
class A extends Thread { @Override public void run() { } }2.实现Runnable接口 实现run方法
class A implements Runnable { @Override public void run() { } }
4.线程下面的方法
1.currentThread() 静态 返回当前正在执行的线程对象的引用。
2.getName () 返回此线程的名称。
3.setName() 更改线程的名字
4.getPriority() 返回此线程的优先级
5.setPriority() 更改此线程的优先级
6.sleep() 静态 将线程进行休眠
5.线程同步和锁
为了确保线程一个一个对共享资源进行操作,等一个结束以后,另外一个再进来操作,要进行加锁,防止多个线程同时操作共享资源,造成数据异常。
public void run() { while (true) { synchronized (this) { if (ticket > 0) { System.out.println(Thread.currentThread().getName() + "卖出了第" + ticket +"票"); ticket--; } else { System.out.println("卖完了"); break; } } } }
6.线程的生命周期
1.线程的创建启动 start()
2.线程可运行状态 抢占 等待cpu
3.线程运行状态 抢占 和执行
4.线程的阻塞 wait sleep 锁
5.线程的消亡 destroy
7.线程等待和线程唤醒
等待线程中代码从上往下执行,但是使用lock.wait()方法以后,咱们当前的线程就等待了,阻塞了。
synchronized (lock) { try { msg.wait(); } catch (InterruptedException e) { e.printStackTrace(); }
唤醒线程使用lock.notify方法去将 等待线程中的正在等待的线程进行唤醒,让等待线程继续往下执行
public class MyThread extends Thread {
private Object lock = new Object();
public void run() {
synchronized (lock) {
// 线程执行的代码
lock.notify(); // 唤醒一个等待中的线程
8.线程池
七个参数
MaximumPoolSize 最大线程数 CorePoolSize 核心线程数 Keep-alive times 存活时间 TimeUnit 存活时间的单位 LinkedBlockingQueue 无界队列 ArrayBlockingQueue 有界队列

被折叠的 条评论
为什么被折叠?



