java学习之多线程

1、概念:

(1)线程:进程可进一步细化为线程,是程序内部的一条执行路径。

(2)进程:程序执行的一次过程,正在运行的程序。

2、常用方法:

   1、 start();启动线程,并执行相应run方法。

  2、   run();子线程需要重写的方法,需要在子线程中实现的代码逻辑写在其中。

   3、 currentThread()静态的,调取当前线程。

   4、 getName()获取此线程的名字。

   5、 setName设置线程名称

   6、 jield,当前线程放弃cpu执行权

   7、 join,在A线程中调用B线程的join方法,表示执行到此方法,A线程停止执行,直到B线程执行完毕。A再执行join之后的代码。

   8、isAlive() :判断当前线程是否还活着。

   9、sleep(long l) ;显示的让当前线程睡眠l毫秒        Thead.currentThread.sleep(10);

  10、

线程调度:时间片

                抢占式:线程优先级:(1)MAX_PRIORITY (=10)

                                                (2)MIN_PRIORITY   (1)

                                                   (3) NORM_PRIORITY (5)默认

                                                getPriority()  获取当前线程优先级

                                                 setPriority()设置当前线程优先级  setPriority(MAX_PRIORITY)  /  setPriority(10)

3、线程实现方式

 1、继承 Thread类



  2、实现Runnable接口

     

4、多线程的优点、线程生命周期

 优点:

 1、提高应用程序的相应,对图形化界面意义重大,增加用户体验,

 2、提高计算机系统cpu的利用率

 3、改善程序结构,将极长又复杂的程序分为多个线程,独立运行,利于理解和修改。

线程的生命周期:

新建——就绪——运行——阻塞——死亡


5、同步代码块与同步方法:

 1、同步代码块:

    synchronized(同步监视器/锁){

        //需要被同步的代码块(操作共享数据的代码)

}

锁;由一个类的对象来充当,哪个线程获取次所,谁就执行大罗号里的被同步的代码。

在实现方式中,考虑同步的话,可以用this来充当锁,但是在继承的方式中,慎用this

2、同步方法:

   public synchronized void  run(){

}



6、单例模式之懒汉模式线程安全问题:


 1、提

7、线程的死锁:

 1、不同线程分别占用对方需要同步的资源不放弃,都在等待对方先放弃,形成死锁,

  2、专门的算法解决死锁,或者尽量减少同步资源的定义来避免死锁。



8、线程通信:

 wait()\notify()\notifyAll()--------->定义在Object中

1、wait()令当前线程挂起并放弃cpu执行权,和同步资源,使别的线程可访问和修改共用资源,而当前线程排队等候再次访问共用资源。

2、notify(),唤醒正在排队等候资源中优先级最高的线程。

3、notifyAll()唤醒全部线程。




猜你喜欢

转载自blog.csdn.net/weixin_41590010/article/details/80864052