Spark-Java Day 17字符串 多线程

  1. 字符串
    1.1 字符串拼接相关问题
    1 常量+常量 结果常量池
    2 常量与变量 或 变量与变量 结果堆
    3 拼接后调用intern()方法:结果在常量池
    4 concat方法拼接,结果都是在堆
    1.2 字符编码转变
    new String(str.getBytes(“UTF-8”), “UTF-8”);
    1.3 正则匹配
^[验证规则]{验证次数}$    ^开始 $结束

1.4 字符串操作其他方法
a 替换
replace(“要替换的内容”,“替换成内容”) 不支持正则
replaceFirst(“要替换内容(正则)”,“替换成内容”) 支持正则
replaceAll(“要替换内容(正则)”,“替换成内容”) 替换所有匹配部分
b 拆分
String s = “a-b-c-d”;
String[] sp = s.split("-");
Arrays.toString(sp);
2. 日期-时间
Date date = new Date()
data.getTime(); = System.currentTimeMills();

SimpleDateFormat simpleDateFormat = new SimpleDateFromat("yyyy年MM月dd日 HH时mm分ss秒 SSS毫秒");
String dateTime = simpleDateFormat.format(date);
  1. 多线程
    a 并发与并行
    并发:两个事件或多个事件在同一个时间段运行。(抢票,多人同时操作一个资源)
    并行:两个或多个事件在同一时刻进行。(多项工作一起执行,最后汇总)
    b 进程与线程
    进程:占用内存空间的软件或应用
    线程:进程执行单元,一个进程里有多个线程
    c 调度方式
    分时调度: 平均分配每个线程占用CPU的时间
    抢占式调度: 优先级高的线程使用CPU,优先级相同则随机选择,JAVA的调度方式为抢占式调度
    2.1 创建线程方式
    获得当前线程名称:Thread.currentThread().getName();
    第一种: 继承Thread类,重写run()方法,new类,调用start()方法
    第二种: 实现Runnable接口,重写run()方法,new类, new Thread()对象,将Thread对象传入new类中,并且传入对应的名字,进行start()
    第三种: 实现Callable接口
    第四种: 使用线程池创建
    2.2 Thread类常用方法
    (1)run方法:执行线程具体操作
    (2)start方法:启动线程
    (3)sleep方法:暂停线程
    (4)join方法: 插队
    2.3 线程安全
    前提:多个操作同时进行时发生线程安全
    1. 同步代码块
synchronized(){}
			synchronized (this){
            if (tickets <= 30) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+" 卖的是第"+(tickets++)+"张票");
            }
        }

2 同步方法

public synchronized void  saleTickets() {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值