JavaSE - Day17 (线程的基本使用)

本文介绍了Java中的线程基础知识,包括进程的概念、线程的定义、多线程的特性,以及线程的创建、启动、关闭、名称设置、优先级、礼让、休眠、合并、守护线程和前台线程的详细操作方法。
摘要由CSDN通过智能技术生成

进程

概念:

        一个正在进行的程序

一个程序准备运行的的时候,系统会为其开辟一块内存

线程

概念:

        一个执行路径

注意:

        1.一个进程中自带一个线程,且这个线程为主线程(main)

        2.一个进程中可以有多个线程,拥有多个线程的进程为多线程

多线程

概念:

        一个进程中有多个线程 称为多线程

注意:

        1.多线程在宏观上是同步执行的

        2.在微观上是多个线程之间在争夺cpu的使用权

线程的组成

cup时间片:

        一个线程抢夺cpu执行权后可以执行的时间

运行数据:

        1.一个线程拥有一个独立的栈

        2.多个线程共享一个堆内存

代码逻辑

线程的使用

创建:

        方案一:

                继承Thread 类,并重写run()方法

                情况一:

                        主函数:

                        MyThread t1 = new MyThread();

                        Thread thread = new Thread(t1);

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

                        class MyThread extends Thread{

                                public void run(){

                                }

                        }

                情况二:

                        匿名内部类

                        Thread thread = new Thread(){

                                public void run(){

                                }

                        };

                        thread.start();

        方案二:

                实现Runnable 接口,并重写run()方法

                情况一:

                        主函数:

                        MyThread  mt = new MyThread();

                        Thread thread = new Thread(mt);

                        thread.start();

                        class MyThread implement Runnable{

                                public void run(){

                                }

                        }

                情况二:

                        Thread thread = new Thread(new Runnable(){

                                \public void run(){

                                }

                        });

                        thread.start();

线程的启动

 语法:

        线程对象.start();

注意:

        一个线程只能启动一次

线程的关闭

注意:

        1.线程一旦开启后就不能被关闭,无法控制

        2.线程执行完run()方法中的代码后,将进入等待销毁状态

名称

        语法:

                设置: 

                1.创建对象的时候设置

                        new Thread(线程名称);

                        new Thread(线程任务 ,  线程名称);

                 2.使用线程对象调用setName()方法设置

                        对象名.setName(线程名称);

                       注意:

                                必须在使用线程之前设置线程名称

               获取:        

                语法:

                        线程对象.getName();

如何获取当前线程对象

语法:

        Thread thread = Thread.currentThread();

优先级

        语法:

                线程对象.setPriority(优先级);

        注意:

                优先级的取值范围:(1 ~ 10)


礼让

        概念:

                在线程抢夺资源的时候,礼让就是将此次抢夺成功的权限放弃,并且重新参与下次抢夺

        语法;

                线程对象.yield();

休眠

        语法:

                Thread.sleep(休眠时间 / 毫秒);

                线程对象.sleep(休眠时间 / 毫秒);

        注意:

                1.单位是毫秒

                2.有异常,.需要解决

                3.线程在休眠的时候不会抢夺cpu的执行权

合并

        语法:

                线程对象.join();        

        注意:

                在线程A的run()方法中调用线程B的此方法,表示将B线程中run()方法中没有执行的代码完全合并到A代码中

守护线程 与 前台线程

前台线程:

        线程创建时默认就是前台线程

        如果一个进程中有前台线程存活,那么该进程就不会被系统所回收

        

守护线程:

        别名:后台进程

        如果一个进程中的所有前台线程都被销毁了,即使进程中还有守护线程,那么该守护线程任然会被销毁

        如何设置一个线程为守护线程:

                语法:

                        线程对象.setDaemon(true);

                注意:

                        必须在启动线程之前

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值