Java基础——多线程编程

来源:互联网 发布:大数据 云存储 编辑:程序博客网 时间:2024/06/10 05:35

多线程编程

1.多进程:等同于多任务,一个进程是一个独立执行的程序,在内存里独立划分一个空间,多进程不是绝对意义上的同时,而是CPU在进程间来回的切换

2.线程是进程内部独立执行的流程,一个进程的所有线程共享一个内存空间,CPU在线程之间来回的切换,CPu在线程之间切换的消耗远远小于在进程之间的切换消耗,线程是最小的处理单位

关键字:Thread

3.线程的实现:

1)第一种方式:

只需继承Thread类,并重写run方法(相当于主线程的main方法),在main方法中调用start方法才能开启多线程,再由start方法自动调用run方法,直接调用run方法虽然没有报错,但是没有开启多线程,只相当于普通方法的调用

2)第二种方式:

继承Runnable接口,把接口对象传入到线程对象Thread中去,再调用Thread线程的start方法

4.线程的声明周期————线程的状态

1)新建状态:newThread对象

2)就绪:start启动,在start运行run方法前

3)运行状态:开始执行run方法

4)死亡状态:run方法执行结束

5)中断状态:这个方法时CPU在执行的过程中,线程中断的状态

A.因为优先级的原因未抢到CPU内存,处于中断的状态

  线程的优先级:setPriority设置优先级,最高为10,最低为1,默认为5

                Thread.MAX_PRIORITY(最高),MIN__PRIORITY(最低),NORM_PRIORITY(默认):优先级高只是被CPU青睐,执行几率高,并不是每次都将优先级高的执行完再执行优先级低的

B.阻塞:线程在执行输入输出事件时,因等待而造成的

C.休眠:调用Sleep方法,传入毫秒数进去,时间到了结束休眠

D.等待、唤醒:ObjectwaitnotifynotifyAll方法,notify方法有先后,第一个执行wait的方法被唤醒

E.挂起yield,强制让某个线程退出CPU执行

当多个线程同时访问同一个资源的时候才会发生线程安全性问题,解决线程安全问题,只需在资源上加同步锁,加了同步锁之后,第一个线程执行完后,第二个才能执行,安全性高效率低,安全性低效率高,但不是多线程都要用安全线程

同步锁关键字synchronized(类型){方法

死锁:当两个及两个以上线程同步访问一对循环依赖资源的时候,有可能发生死锁

用线程间的通信解决死锁问题,waitnotify,只能够写在同步方法或者同步块中。}

 

0 0
原创粉丝点击