多线程与同步代码块

主线程
  • Thread类
    Java提供了java.lang.Thread类支持多线程编程

  • 主线程
    main()方法即为主线程入口
    产生其他子线程的线程
    必须最后完成执行,因为它执行各种关闭动作


在Java中创建线程的两种方式
  1. 继承java.lang.Thread类
  2. 实现java.lang.Runnable接口

调用run() 只有主线程一条执行路径
调用start() 多条执行路径,主线程和子线程并行交替执行


两种创建线程的方式

继承Thread类

  • 编写简单,可直接操作线程
  • 适用于单继承

实现Runnable接口

  • 避免单继承局限性
  • 便于共享资源
void setPriority(int  newPriority)   //更改线程的优先级
static void sleep(long millis)     //在指定的毫秒数内让当前正在执行的线程休眠
void join()       //等待该线程终止
static void yield()      //暂停当前正在执行的线程对象,并执行其他线程
void interrupt()        //中断线程
boolean isAlive()     //测试线程是否处于活动状态

同步代码块
synchronized(syncObject){
    //需要同步的代码
}
public void run() {
    while (true) {
        synchronized (this) {   //同步代码块
        // 省略修改数据的代码......
       // 省略显示信息的代码......
}}}

线程安全

StringBuffer

  • 线程安全

StringBuilder

  • 非线程安全

Hashtable

  • 实现了Map接口,Hashtable继承Dictionary类
  • 线程安全,效率较低
  • 键和值都不允许为null

HashMap

  • 实现了Map接口,继承AbstractMap类
  • 非线程安全,效率较高
  • 键和值都允许为null
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值