今天学完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,多线程总结