多线程 170922

第一章    多线程

1.进程

   (1)进程是系统运行程序的基本单位

   (2)每一个进程都有自己的独立的一块内存空间,一组系统资源。

   (3)每一个进程的内部数据和状态都是独立的。

2.线程

    (1)线程是进程过程中执行运算的最小单位,可完成一个独立的顺序控制流程。

    (2)每个进程中,必须至少建立一个进程(这个线程为主线程)来作为这程序运行的入口点。

    (3)如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”,

               多个线程 交替 占用CPU资源,而非真正的并行执行。

3.多线程的好处

    (1) 充分利用CPU的资源 
    (2) 简化编程模型
    (3) 带来良好的用户体验

4.在java中实现多线程的两种方法

     (1)继承Thread类

         Java提供了java.lang.Thread类支持多线程编程

        流程:1.创建MyThread(类名可自定义)类继承Thread类  ——>>2. 在MyThread类中重写run方法实现数据输出

        ——>>3.在main方法中创建线程对象,调用start()方法启动线程。

      代码如下

   ------------------------------------------------------------------------------------------------------------------------------------------------  

        public class MyThreadextends Thread{

         //重写run()方法

        public void run(){

           for(int i=1;i<100;i++){  System.out.println(

            Thread.currentThread().getName()+":"+i);

        }}}

 ---------------------------------------------------------------------------------------------------------------------------------------------------------

      

      publicstatic void main(String[] args) {

          MyThread thread = new MyThread();

          thread.start(); //启动线程

      }

 -------------------------------------------------------------------------------------------------------------------------------------------------------------------

      (2)实现Runnable接口创建线程
          流程:1.定义MyRunnable(类名可自定义)类,实现Runnable接口和重写run()方法,在run方法中实现输出数据 ——>>
                      2.在main方法中创建MyRunnable类的对象myRunnable ——>>
                      3.创建一个Thread类的对象myThread,将myRunnable对象作为Thread类的构造方法的参数传入——>>
                      4.调用myThread 对象的start方法启动线程。
----------------------------------------------------------------------------------------------------------------------------------------------------------
         

       public class MyRunnableimplements Runnable{

                  public void run(){

                         for(int i=1;i<100;i++){  System.out.println(

                             Thread.currentThread().getName()+":"+i);

                        }}

            }

-------------------------------------------------------------------------------------------------------------------------------------------------------------

       

      publicstatic void main(String[] args) {

              MyRunnable myRunnable = new MyRunnable();

             Thread myThread = new Thread(myRunnable); 

             thread.start(); //启动线程

        }

 ----------------------------------------------------------------------------------------------------------------------------------------------------------
   (3)两种创建方式的比较
               1.继承Thread类
                      编写简单,可直接操作线程
                     适用于单继承
               2.实现Runnable接口
                      避免单继承局限性
                     便于共享资源


   

5.线程的状态


   


6.关于线程调度的方法表



方       法

 说       明

setPriority(int  newPriority)

更改线程的优先级

static void sleep(long millis)

在指定的毫秒数内让当前正在执行的线程休眠

void join()

等待该线程终止

static void yield()

暂停当前正在执行的线程对象,并执行其他线程

void interrupt()

中断线程

boolean isAlive()

测试线程是否处于活动状态


 7.synchronized方法

     使用 synchronized 修饰的方法控制对类成员变量的访问
          
          synchronized就是为当前的线程声明一个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值