今天学完IT十八掌第九天java基础课程:
学习内容:
创建线程方式
-----------------
1.Thread
class Demo extends Thread
{
public void run()
{
}
}
2.Runnable{public void run();}
class Man extends Person implements Runnable{
public void run(){
...
}
}
new Car().start();
new Thread(new Man()).start();
实现方式和继承方式的区别:
1,实现方式避免了java中单继承的局限性。
2,实现方式将代码和数据分离,体现了面向对象的设计思想
3,实现方式可以保证多个线程操作同一数据,提高代码的健壮性。
生产消费问题:
蜜蜂和熊:
蜜蜂和熊为两个线程类,操作共享资源类蜂蜜类。
关键在于操作蜂蜜时,代码应该同步,避免出现多线程的安全问题。
其次,在生产和消费时,应该分离,分别使用wait和notify来控制。
wait()和notify必须用锁旗标对象来调用,也就是说必须在同步中使用,这个锁可以是Object类的任何子类对象,具备的是标记功能。
wait()方法使得当前线程对象进入等待队列,放弃cpu执行权,并且释放锁,具备cpu执行权的线程可以拿到锁。会抛异常
notify()方法唤醒等待队列中的一个线程,具备cpu执行权的争夺。
notifyAll()方法唤醒等待队列中的所有线程,争夺cpu执行权。
wait()和sleep()方法区别与联系:
1,wait()方法必须在同步中使用,通过锁旗标调用,sleep()可以在线程的任何位置,通过线程对象调用。
wait()方法是Object当中的,而sleep()方法是Thread类当中的。
2,wait( )方法和sleep()方法都会使得当前线程休眠,但是wait()方法会释放锁,而sleep()方法不会释放锁。会等待当前线程休眠完毕继续执行。
3,调用wait()方法会使当前线程进入等待队列,知道锁对象调用notify()或者notifyAll()才会被唤醒。
eclipse
---------------
alt + / //代码辅助
alt + 上箭头 //向上移动一行
alt + 下箭头 //向上移动一行
alt + shift + 上箭头 //向上复制一行
alt + shift + 下箭头 //向下复制一行
ctrl + D //删除一行
ctrl + / //单行注释
ctrl + shift + / //多行注释
ctrl + shift +f //格式化代码
alt + shift +s //调出source菜单项
ctrl +O //调出对应的详细信息
String
-----------------
1. == //判断是否是同一对象。判断对象的内存地址。
2. equals //是判断两个对象内容是否相同。
String类中重写了Object类中的equals方法,用于比较字符串的内容是否相同。
split(String reg); //按照指定的字符串进行拆分,返回值数组。
str.split(",") 按逗号切割字符串,返回对应类型的数组。
例如: String str = "saf,fdsa,fsald";
String [] ss = str.split(",");
substring(int start); //取子串操作,指定起始索引之后的所有字符
substring(int start,int end); //取子串操作,指定起始索引和结束索引之间的全部字符,
//包含起始索引,不含结尾索引。[a,b)属于半开半闭区间。
基本数据类型对象包装类
---------------------------------------------
byte Byte //包装类
short Short
int Integer
long Long
float Float
doule Double
boolean Boolean
char Character
byte b = 127 ;
Byte b = new Byte(127);
遇到的问题:
1,多线程生产消费问题
2,eclipse使用,debug使用
3,String类的方法
需要帮助的问题:
1,eclipse调试代码,工具使用
2,多线程总结
本文出自 “菜鸟成就数据之路” 博客,转载请与作者联系!
原文地址:http://liubx.blog.51cto.com/11235064/1774292