创建线程的方式

--------------------------------------

        1. 继承 Thread 类。

        2.实现Runnable接口。

            1)、通过Thread类创建线程,并把实现Runnable接口的了类对象做为参数传递给Thread类的构造函数。Thread类调用start()方法启动线程。

        3.线程调用了start方法并不立即执行,而是处于就绪状态,等待cpu的执行权。

        4.线程的安全问题。


线程同步

------------------------------------------------

        1.线程同步:synchronized(对象){..需要同步的代码块..}。此处的“对象”是任意类的对象。该对象如同锁的功能。

        2.线程同步的前提:

            1)同步需要两个或者多个线程。

            2)多个线程使用同一个锁

        3.同步会降低程序的运行效率。因此同步中的代码尽量的短。

        4.同步方法用的是方法所在对象的锁。

线程等待(wait)

--------------------------------------

        1.当线程调用wait后,线程释放cpu使用权后处于等待状态,当再次获取cpu使用权后,代码从wait后面执行。

线程的优先级

---------------------------

        1.setPriority();    //设置线程的优先级

        2.getPriority();    //获取线程的优先级

        3.优先级高的获取cpu的机率大一些。

线程状态转换图

------------------------------------------------

502D74341A9E4DD69C0813D76A3A6924

strng

---------------------------------------------------

        1.“==”是判断两个字符串对象的内存地址是否相等

        2.“equal”是判断两个字符串对象的内容是否相等

        3.StringBuffer是线程安全的。效率比较低。StringBuilder是后来加的一个类,是线程不安全的,效率高。

        4.基本数据类型的拆箱和装箱。