关于线程的知识点

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      有界队列
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值