08月25日 星期二(字符串,进程,同步的一点知识)

字符串具有畅读不可改变的特性。对字符串进行添加,删除,替换时,不会改变字符串本身,而是产生一个新的字符串对象。例如:

        String x1 = "adsoadpasiop";
        x1 = x1.replace("ad", "*");
            System.out.println(x1);

StringBuffer会在缓冲区开辟一个空间,当对StringBuffer的内容做连接。替换。删除等操作的时候,不会产生新的对象。

如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法即可。

以上说的就是String和StringBuufer的区别。

StringBuilder是线程不安全的,StringBuffer是线程安全的。

性能:StringBuilder > StringBuffer > String

单任务处理:一个任务执行完毕后,才执行下一个
多任务处理:在一个任务没有执行完毕的情况下,又在执行下一个任务。几个任务同时执行。

进程是一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程开启都会消耗内存。

线程是进程内部的单一顺序控制流。一个进程拥有多个线程。多个线程共享一个进程的内存空间。

主线程:main方法一运行,就产生了主线程。
主线程特点:
1、最先开始
2、最后结束
3、产生其他的子线程
4、回收资源

调用start()和调用run()方法区别:
run(),是普通方法,不会产生新的线程。
start()表示在主线程基础上,产生一个新的子线程。这样子线程和主线程就会交替执行。

创建线程的方式:
1、继承Thread类,重写run();
2、实现Runnable接口,实现run();
相比而言,使用第二种接口的方式更好。类只能单根继承,如果一个类继承了别的类就不能再继承Thread类了。但接口可以多实现。

线程的优先级:
当一个或多个线程,同时处于就绪状态。优先级高的线程,会优先得到执行。优先级一共10级,数字越大,优先级越高,默认5级。通过setPriority(int x)改变线程的优先级。

线程同步(synchronized同步关键字,该关键字修饰方法,该方法叫做同步方法,童同步意味着该方法同时间只能允许一个线程访问):
当两个或两个以上的线程同时访问,同一个资源时,为了保护资源的数据安全,只允许同一时间一个线程对该资源访问。

同步造成的后果:
1、数据安全
2、效率低下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值