黑马程序员——线程的学习

:多线程 Thread

1.线程的概念,程序中的执行路径,控制进程的执行。

2.线程有五中状态分别是:创建,运行,消亡,冻结,阻塞

3.Thread里面的重要方法有sleep();start();run(); interrupt(),yield();toString()


(1)sleep(),在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)

(2)start();开启一个线程

(3)run(),内容为需要执行的代码块;

(4)interrupt(),中断线程。

(5)yield(),暂停当前正在执行的线程对象,并执行其他线程。

(6)toString(),回该线程的字符串表示形式,包括线程名称、优先级和线程组。

以上方法中:sleep()和yield(),方法都是暂停执行线程;

区别:

  (一)sleep执行后线程进入阻塞状态,sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会。
(二)yield执行后线程进入就绪状态,yield()只能使同优先级的线程有执行的机会。

4.创建线程有两种方法,继承 Thread类,实现Runnable接口

两种创建线程的方法实例体现:

class ThreadDemo extends Thread{

run(){

//定义要实现的操作

}}

class Demo{

main(){

 ThreadDemo  th1=new ThreadDemo ();

ThreadDemo  th2=new ThreadDemo ();

}

}


实现Runnable接口的方法:

具体步骤:

1。定义类实现Runnable接口

2。覆盖Runnable接口中的run方法,将线程要运行的代码存放在run方法中;

3.通过Thread类创建起线程对象

4.将Runnable接口的子类对象作为实际参数传给Thread类的构造函数(为了明确run()的所属对象);

5,调用Thread类的start启动线程并调用Runnable接口子类的run方法;



二者的区别与优点:

1,继承Thread类具有局限性,一个类只能继承一个父类,开发中一般不用。

 2,定义类实现Runnable接口,Runnable定义的子类中没有start()方法,需要hread类的start().优点:可以避免Thread类的继承的局限,类可以继承多个接口,有利于资源的共享。



同步代码块:

此处知识点最重要的一部分为synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程,运行到这个方法时,都要检查有没有其它线程正在用这个方法,有的话要等正在使用synchronized方法的线程运行完这个方法后再运行此线程A;没有的话,直接运行。

代码实例:

public class Thread1 implements Runnable { 
     public void run() { 
          synchronized(this) { 
               for (int i = 0; i < 5; i++) { 
                    System.out.println(Thread.currentThread().getName() + " synchronized : " + i); 
               } 
          } 
     } 
     public static void main(String[] args) { 
          Thread1 t1 = new Thread1(); 
          Thread tt1= new Thread(t1, "A"); 
          Thread tt2= new Thread(t1, "B"); 
         
          tt2.start(); 
           tt1.start(); 
     }
}

分析:在该代码段中通过实现Runnable接口来创建线程,在main()函数内创建两个线程分别为tt1,tt2线程,创建的线程要执run里面的循环打印,因为主函数里面最先启动的是tt2线程,所以在启动的时候synchronized 关键字开始检查有没有其他线程在运行,没有,则开始运行tt2线程,直到循环完成才开始启动tt1,也就保证了两个线程的安全运行而不会出现死锁的状态,加synchronized 大大的提高了安全性。



个人总结:在线程的创建中,有两种方式,但是一般开发都采取的是实现Runnable接口方式,具体原因上面有。在线程中更重要的是处理同步问题,异步问题,为了提高安全性,必须需要同步的执行代码块加锁才能有效的解决死锁或者其他问题。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值