Java基础--第二十三天

时间:2021-07-30 11:40:04

Java基础--第二十三天

多线程:         多条执行单元

         进程:正在运行的应用程序

         线程:进程的执行单元,一条执行路径

                   迅雷下载,360清理

 

         多线程程序实现:

                   线程依赖于进程存在,Thread类

                            子类继承

                            子类重写run方法

                            调用strart(),让线程启动,调用run()方法

                                     同一个线程对象连续两次启动,报错:表示该线程状态有问题

                            getName()方法:标志不同线程,获取线程名称

                            setName():更改线程名字

                   线程随机性:

                            程序执行,抢占CPU资源,CPU在多个程序间切换。

                  

                   第二种实现:

                            创建类,实现Runnable接口

                            重写run方法

                            创建类的实例

                            把类的实现作为Thread的构造参数,创建Thread对象引用

                                     Thread.currentThread().getName()

 

                                     优势:

                                               避免了单继承的局限性;

                                               实现接口的方式只创建一次,更好的实现了数据与操作的分离。

                                     买票代码:

                                               A:共享数据;两种方式;

                                               B:卖出负数,卖出相同票--解决问题方式

                                                        【线程的随机性和延迟性】

 

                                     找问题出处:

                                               A:看有没有共享数据;

                                               B:看共享数据的操作是不是多条语句;

                                               C:看是不是在多线程程序中

                                               解决:把满足条件的代码锁在一起  synchronized

                                     锁对象:同步代码块的锁是任意对象

                   同步方法:把锁就在方法上---线程安全问题

                            this对象

                            静态方法:类名.class   Class【字节码文件】类型的对象

                   死锁

                            被同步的代码越少越好,建议使用同步代码块

                            若一个方法全部被同步了,就用同步方法

        

         线程间的通信:

                   学生信息录入与输出:多线程随机性

                            录入一个,输出一个---同一个

                            学生 信息录入  信息获取  集中测试类