黑马程序员,黑马论坛-----多线程知识点总结

来源:黑马程序员,黑马论坛

 

创建:
方式一:继承 Thread
  步骤:
  继承 Thread 覆写 run( ) 方法
  通过 Thread 子类创建线程对象
  调用 start( ); 方法开启线程执行 run( )


 

方式二:实现 Runnable 接口
  步骤:
  定义类实现 Runnable 接口
  覆盖接口中的 run( ) 方法
  通过 Thread 类创建线程对象
  将实现 Runnable 接口的子类对象作为实际参数传递给 Thread 类的构造函数
  // 让线程明确 run( ) 方法所属对象是为了关联线程任务和线程对象
  调用 Thread 对象的 start( ) 方法。开启线程运行 Runnable 接口中的 run( ) 方法
  Ticket t = new Ticket();
  Thread t1 = new Thread(t); //创建线程。
  t实参传递,明确要运行的run( ) ,Ticket实现Runnable接口,覆写run()


 

状态:


 

创建:
     new Thread对象或其子类对象
运行:
     start( ),具备执行资格与执行权
冻结:
     放弃执行资格与执行权
       sleep(time);
       必须指定时间,时间到从冻结状态变为运行状态
   释放执行权不释放锁
   wait( );
  指不指定时间都可以,不指定的话必须由notify或notifyAll唤醒
  释放执行权,释放锁 (必须在同步中)
消亡:
stop();
阻塞:
线程具备cpu的执行资格,没有cpu的执行权
join方法:直到调用该方法的线程执行完再往下继续执行,异步变同步
yield方法:让出CPU执行权给同优先级线程与sleep类似
安全问题:


 

产生原因:多个线程操作共享数据,共享数据有多条语句,在某时刻被一个线程执行时没有执行完就被其他线程参与进来,并继续操作了共享数据,导致错误产生
多个线程操作共享数据
有多条语句对共享数据进行运算
解决:(加锁)共享数据的多条语句在某一时刻让一个线程执行完,其他线程不能执行
单例
只有一个对象:自己创建别人不能创建但我提供方法让你用
例子:军队指挥官,电脑资源管理器
--- 饿汉
--- 懒汉
  ------- 安全(双重判断加锁 single.class
  ------- 不安全

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值