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

java多线程

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

java多线程

为什么要实现多线程:①可以提高资源利用率,如一个程序需要跑一段很长的时间,要是单线程只能等这个跑完。但多线程可以并发(单个Cpu)、并列(多个CPU)去执行其他的一些程序。

②让程序中的某个功能可以一个线程去做一件具体事情。(高效)

二、实现多线程有三种方法

①继承Thread类的方式。 ②实现Runnable接口的方式。③使用线程池的方式。

①继承Thread(线程)类说明

自定义的类中用extends关键字继承。之后得重写Run()方法。在方法里面写上自己要实现的内容。最后通过调用start()方法,启动线程

注:这里的所有方法都是继承自父类(Thread)的,要写上继承才能使用这些方法。

②Runnable(接口)的使用说明

在类中用implements关键字书写接口,加上Runnable并重写run()方法,Runnable只有一个方法就是run()方法,修改完后,在测试类中调用并创建对象作为任务,将创建对象的变量名填写在Thread的构造方法中。调用Thread的start()方法启动线程。

对比这两种各有优缺点:

第一种:中直接继承的第一个缺点就是将继承机会使用了,父类只能是Thread,但有点就是编写简单,并且继承后可以直接使用父类的各种方法。

第二种:中是通过接口方式去使用,因为接口可以有多个,因此扩展性强。但编写较为复杂,并且不能直接使用Thread的方法。只能间接去使用。

Thread的常用方法

 注意:并不是说设置了优先级就优先执行这个线程,只能说CPU会优先执行但这也不是绝对的,因为线程执行还是有随机性,只是概率上来说优先级越高的线程越有机会先执行。

线程安全问题

说明:为什么会有线程安全问题,是因为当多个线程访问共享数据,且多个线程对共享数据有更新操作时,就容易出现线程安全问题。

java提供了三种解决出现问题的办法

1.同步代码块

格式:        synchronized(同步锁) {           有线程安全问题的代码        }

实例方法(无static修饰):同步锁对象就是this。(当前方法调用者对象)

静态方法(static修饰):同步锁对象为当前类的Class对象。 (类名.class 或者 对象名.getClass() 可以获取类的字节码对象 )

注:同步锁可以使用使用任意对象,Java中处处皆对象。但推荐使用官方推荐的方式来(即上面两种)

2.同步方法

格式:           修饰符  synchronized  返回值类型  方法名(参数列表) {                    方法体;           }

3.Lock锁机制

 try{            lock.lock();   //加锁                    需要同步处理的代码;       }finally{            lock.unlock();   //在finally块中,保证锁一定会被释放。       }

(具体看我上传的三种处理方式)

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

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

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