狂人日记day15

狂人日记day15

本来应该开springboot 但是感觉暂时无法进行下去 所以先来个多线程搞搞

Thread 方法

  • 有run方法先走run (不走main的)

  • 调用start 启动线程(和main同时)

Runnable接口

public class test2 implements Runnable{
 int ticket = 10;
 @Override
 public void run() {
     while (true) {
         if(ticket<0){
             break;
         }
         try {
             Thread.sleep(10);
         }
         catch (InterruptedException e){

         }
             System.out.println(Thread.currentThread().getName()+"抢到了"+ ticket--);
     }
 }

 public static void main(String[] args) {
 test2 test2 = new test2();
     new Thread(test2,"小明").start();
     new Thread(test2,"小王").start();
     new Thread(test2,"小虎").start();

 }
}

lamda 表达式

函数式接口 一个接口只有一个方法

public static void main(String[] args) {
 face face2 = ()->{
     System.out.println("lei");
 };
 face2.test();
}

线程状态

线程停止:stop

  • 一般建议线程正常停止

  • 使用一个标志位

  • 不建议stop destory等

线程休眠:sleep

  • 线程存在异常 需要抛出异常

线程理让:yield

  • 理让不一定成功

线程强制执行:join

  • 有异常注意抛出

观测线程状态

  • Thread.state

线程不能重新start

线程优先级

  • getpriority

  • setpriority MAXPRIORITY = 10

  • 有可能性能倒置 优先级低的先跑

守护线程

 public static void main(String[] args) {
     god god = new god();
     you you = new you();
     Thread thread = new Thread(god);
     thread.setDaemon(true);
     thread.start();
     new Thread(you).start();
 }

}

class god implements Runnable{
 @Override
 public void run() {
     System.out.println("shouhu");
 }
}
class you implements Runnable{
 @Override
 public void run() {
     System.out.println("zai");
 }
}

并发 – 多个线程访问一个对象

线程同步机制

  • 队列

  • 锁 :synchronized

会出现性能问题

线程不安全:可能会出现数据不一致

JUC

  • Copywriterarraylist

死锁

lock

lock.lock 加锁

生产者消费者模式

  • 管程法 – 互相通知

  • 信号灯法

线程池

线程池简单就是就是把一堆线程扔进一个池子处理,以解决cpu可能吞吐慢的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值