首页 / JAVA / JavaSE基础笔记十二
JavaSE基础笔记十二
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaSE基础笔记十二,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2697字,纯文字阅读大概需要4分钟。
内容图文
第十一章 多线程
-
理解程序、进程、线程的概念
程序可以理解为静态的代码。
进程可以理解为执行中的程序。
线程可以理解为进程的近一步细分,程序的一条执行路径。
2.如何创建java程序的进程(重点)
方式一:继承于Thread类
①创建一个继承于Thread的子类
②重写Thread类的run()方法,方法内实现此子线程要完成的功能
③创建一个子类的对象
④调用线程的start():启动此线程,调用相应的run()方法
⑤一个线程只能够执行一次start
方式二:实现Runnable接口
①创建一个实现Runnable接口的子类
②重写Thread类的run()方法,方法内实现此子线程要完成的功能
③创建一个子类的对象
④创建一个Thread对象,并把子类对象作为形参传递进去,调用线程的start():启动此线程,调用相应的run()方法
两种方式的对比:
联系:class Thread implements Runnable
实现的方式较好1.解决了单继承的局限性 2.若多个线程有共享数据,建议使用实现方式,同时,共享数据所在的类可作为Runnable接口实现的类
线程里常用的方法:start() run() currentThread() getName() setName(String name) yied() join() sleep() isAlive() getPriority() setPriority(int i);
wait() notify() notifyAll()
3.线程的生命周期
新建 就绪 运行 阻塞 死亡
4.进程的同步机制(重点)
前提:如果我们创建多个线程,存在着共享数据,那么就有可能出现线程的安全问题:当其中一个线程操作共享数据时,还未操作完成,另外的线程就参与进来,导致对共享数据的操作出现问题
解决方式:要求一个线程操作共享数据时,只有当其完成操作完成共享数据,其它线程才有机会执行共享数据
方式一:同步代码块
synchornized(同步监视器){
//操作共享数据的代码
}
1.同步监视器:俗称锁,任何一个类的对象都可以充当锁,想要保证线程安全,必须要求所有的线程共用同一把锁
2.使用实现Runnable接口的方式创建多线程的话,同步代码块中的锁,可以考虑是this,如果使用继承Thread类的方式慎用this
3.共享数据:多个线程需要共同操作的变量。要明确哪部分是操作共享数据的代码。
方式二:同步方法:将操作共享数据的方法声明为synchornized
如:public synchronized void show(){//操作共享数据的代码}
1.对于非静态方法而言,使用同步的话,默认锁为:this。如果使用继承的方式实现多线程的话,慎用
2.对于静态的方法,如果使用同步,默认锁为:当前类本身
总结:释放锁:wait();
不释放锁:sleep() yied() suspend()(过时,可能导致死锁)
死锁:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁
5.进程的通信 如下的三个方法必须使用在同步代码块或同步方法中
wait():当在同步中执行到此方法,则此线程“等待”,直至其他线程执行notify()的方法,将其唤醒,唤醒后继续其wait()后的代码
notify() notifyAll():在同步中,执行到此方法,则唤醒其他的某一个或所有的被wait()的线程
第十二章 java常用类
1.String类:是一个final类,代表不可变的字符序列
String类与基本数据类型、包装类;与字符数组、字节数组的转化
①字符串--->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
②基本数据类型、包装类--->字符串:调用字符串的重载的vauleOf()方法
③字符串--->字节数组:调用字符串的getBytes()
④字节数组--->字符串:调用字符串的构造器
⑤字符串--->字符数组:调用字符串的toCharArray();
⑥字符数组--->字符串:调用字符串的构造器
⑦String--->StringBuffer:使用StringBuffer的构造器 newStringBuffer(StringBuffer str)
⑧StringBuffer--->String:使用StringBuffer的toString方法
Stringbuffer类:可变的字符序列
Stringbuild:可变的字符序列,jdk5.0新加,效率高,线程不安全
常用方法:添加append() 删除delete(int startIndex,int endIndex) 修改setCharAt(int n,char ch) 查询charAt(int index) 插入inset(int index,String str) 反转reverse() 长度length()
2.时间、日期类
①System类:currentTimeMillis():返回当前时间的long型值,此long值是从1970年1月1日0点0分00秒开始到当前的毫秒数。
常用来计算时间差。
②Date类:java.util.Date
Date d = new Date();//返回当前时间的Date:Mon May 12 15:17:01 CST 2014
Date d1 = new Date(15231512541241L);//返回形参处此long型值对应的日期
③SimpleDateFormat :java.text.SimpleDateFormat
格式化:日期---->文本 使用SimpleDateFormat的format()方法
解析:文本--->日期 使用SimpleDateFormat的parse()方法
④Calendar:日历类
获取实例:Calendar c = Calendar.getInstance();
get()/set()/add()/date getTime()
3.Math类 了解
4.BigInteger BigDecimal类 了解
本文出自 “阿成的博客” 博客,转载请与作者联系!
原文:http://fanyuecheng.blog.51cto.com/9529438/1589461
内容总结
以上是互联网集市为您收集整理的JavaSE基础笔记十二全部内容,希望文章能够帮你解决JavaSE基础笔记十二所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。