Java之线程基本概念

1.线程是程序中的执行路径。
   java虚拟机允许程序并发地运行多个执行路径。
   当某个线程中运行的代码创建了一个显得Thread对象时,新线程的初始优先级等于父线程的优先级;只有守护线程才能创建出 可标记为守护程序的新线程。
2.
创建新线程的两种方法:
     2.1新建一个类,该类满足:继承于Thread类、重写Thread的run()方法
       注意创建好这个类之后,要想分配并启动该子类的实例,
       需要创建子类的对象,并且调用父类的start()方法启动线程。
       !!而Thread类的start()方法的作用是:使线程开始执行,
        并且Java虚拟机调用该线程的run()方法.
        !!注意start()方法只能有一次,因为线程不能重复启动。
     2.2新建一个类,该类满足:实现Runnable接口、实现run()方法

  • 定义类实现Runnable接口并重写run()方法;
  • 创建Thread类对象
  • 将Runnable接口的实类对象当做参数传给Thread对象的构造方法
  • 调用Thread对象的start()方法启动线程。

3.多线程下,结果是很随机的。多线程的随机性
  run()方法进栈并不是进入main()的栈,而是自己线程私有的栈。
 否则由于栈的先进后出特性,是不会有随机性的。
虚拟机开了一个主线程,运行main,一旦遇见创建新线程对象,
程序就会有俩条运行路径,此时就有了随机性。
4.线程对象调用run()方法和start()方法,有什么区别?
     调用run()方法就是普通的方法调用,不会开启线程;
    而start()方法会开启线程,并让jvm调用该线程的run()方法。
5.创建线程的目的是什么?
   为了建立程序单独的执行路径,提高程序的使用率(有多个线程为程序抢占cpu)
6.重写run()方法的目的是什么?
   重写run()方法是新建线程必须的操作,此外规定新线程要执行的任务都写在run()内。
7.Thread类的sleep()方法
     ---让调用该方法的线程进行休眠,()内规定休眠时间,单位为毫秒。
8.用Runable接口实现类创建新线程的优点是?
    把线程对象和线程任务分离开来,降低了程序的耦合性,符合程序要高聚合低耦合的原则。
    而继承Thread类的方法,是把线程任务封装在了子类中。

猜你喜欢

转载自blog.csdn.net/qq_39091292/article/details/81518212