栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-线程

进程:是正在运行的数据

        是系统进行资源分配和调用的独立单位

        每一个进程都有它自己的内存和系统资源

线程:是进程中的单个顺序控制流,是一条执行路径

        单线程:一个进程如果只有一条执行路径,则称为单线程程序

        多线程:一个进程如果有多条执行路径,则称为多线程程序

实现多线程

1、继承Thread类、重写ran()方法

2、实现Runnable接口、重写run()方法

MyThread thread = new MyThread();//MyThread是自己定义的一个重写run的类

MyThread thread1 = new MyThread();

thread.run();//封装线程执行的代码,直接调用

thread1.start();//启动线程,然后由JVM调用此线程的run()方法

设置线程名

                         setName();

                        thread.setName("线程一");

 带参构造方法:使用时要在类中添加构造方法

                         MyThread thread2 = new MyThread("线程三");

获取当前正在执行的线程对象的引用

                         System.out.println(Thread.currentThread());

线程调度模型

        分时:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片

        抢占式:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU的时间片相对多一些——javq使用抢占式

设置线程优先级以及获取线程优先级

                MyThread thread1 = new MyThread("线程一");

                MyThread thread2 = new MyThread("线程二");

                thread1.setPriority(3);//设置线程优先级

                int i1 = thread1.getPriority();//获取线程优先级

                int i2 = thread2.getPriority();//获取线程优先级

                System.out.println(i1+","+i2); thread1.start(); thread2.start();

注:线程优先级高只是代表着获取CPU时间片的概率高,并不是一定会首先执行

同步代码块

        synchronized(对象){执行语句}:相当于给代码上锁,对象就是锁

同步方法

        就是在返回类型前面添加一个关键字synchronized

        同步静态方法的锁对象是 (类.class)——这是类的字节码文件对象

        同步之后可以使用wait()等待以及notifyAll()唤醒其他线程

Lock锁

        Lock是接口,不能直接实例化,可以使用ReentrantLock来实例化

        lock:得到锁

        unlock:解锁

        可以使用try{    lock()    } finally{     unlock()   }的结构可以确保中间代码出现错误时依然释放锁

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号