多线程简介(全)菜鸟传奇

内存:所有的应用程序都需要进入到内存中执行临时存储RAM

硬盘:永久存储ROM

点击一个应用程序的功能执行,就会开启一条应用程序到cpu的执行路径,cup就可以通过这个路径执行功能,这个路径有一个名字,叫线程。

线程属于进程:是进程中的一个执行单元,负责程序的执行

线程的好处:

如:单核心线程cpu

4核心8线程

分时调度

抢占式调度

主线程:执行主(main)方法的线程

单线程程序:Java程序中只有一个线程执行从main方法开始,从上到下依次执行

创建多线程程序的第一种方式:创建Thread的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类。

实现步骤:

Java使用的就是抢占式调度。优先级高的线程使用cpu先使用,若相同,随机选择一个。

//1.创建一个Thread类的子类publicclassMyThreadextendsThread{//2.在Thread类的子类中重写Thread类的run方法,设置线程任务(开启线程要做什么?)@Overridepublicvoidrun(){for(inti=0;i<20;i++){System.out.println("run:"+1);}}}publicclassCaiNiao{publicstaticvoidmain(String[]args){//3创建Thread类的子类对象MyThreadmt=newMyThread();//4.调用Thread类中的方法start方法,开启新的线程,执行run方法。mt.start();//主线程会继续执行主方法中的代码for(inti=0;i<37;i++){System.out.println("main:"+i);}}}创建多线程程序的第二种方法:实现Runnable接口java.lang.Runnable

java.lang.Thread类的构造方法

实现Runnable接口创建多线程程序的好处:1避免了单继承的局限性

2增强了程序的扩展性,降低了程序的耦合性(解耦)

匿名内部类的作用:简化代码

格式:

new父类/接口(){重置父类/接口中的方法};//线程的父类是Thread//newMyThread().start();//线程的接口Runnable//Runnabler=RunnableTmpl();//多态//newRunnable(r).start();Thread类的常用方法获取线程的名称:

设置线程的名称:

创建三个的线程,同时开启,对共享的票进行出售

publicclassRunnableImplimplementscRunnable{//定义一个多线程共享的票源privateintticket=100;//设置线程任务:买票@Overridepublicvoidrun(){//使用死循环,让卖票操作重复执行while(true){//先判断票是否存在if(ticket>0){//提高安全问题出现的概率,让程序睡眠try{Thread.sleep(10);}catch(InterruptedExceptione){e.printStackTrace();}//票存在,卖票ticket--System.out.println(Thread.currentThread().getName()+"-->正在卖第"+ticket+"张票");ticket--;}}}}publicclassCaiNiao{publicstaticvoidmain(String[]args){//创建Runnable接口的实现类对象RunnableImplrun=newRunnableImpl();//创建Thread类对象,构造方法中传递Runnable接口的实现类对象Threadt0=newThread(run);Threadt1=newThread(run);Threadt2=newThread(run);//调用start方法开启多线程t0.start();t1.start();t2.start();}}这样会导致一个结果

格式:syncharonized(锁对象){可能会出现线程安全问题的代码(访问了共享数据的代码)}注意:

publicclassRunnableImplimplementscRunnable{//定义一个多线程共享的票源privateintticket=100;//设置线程任务:买票@Overridepublicvoidrun(){//使用死循环,让卖票操作重复执行while(true){//同步代码块syncharonized(obj){//先判断票是否存在if(ticket>0){//提高安全问题出现的概率,让程序睡眠try{Thread.sleep(10);}catch(InterruptedExceptione){e.printStackTrace();}//票存在,卖票ticket--System.out.println(Thread.currentThread().getName()+"-->正在卖第"+ticket+"张票");ticket--;}解决线程安全问题的二种方案:使用同步方法使用步骤:

格式:定义方法的格式

修饰符synchronized返回值类型方法名(参数列表){可能会出现线程安全问题的代码(访问了共享数据的代码)}解决线程安全问题的三种方案:使用Lock锁java.util.concurrent.Locks.Lock接口Lock实现提供了比使用synchronized方法和语句可获得的更广泛的锁定操作。

Lock接口中的方法:

publicstaticvoidsleep(Longmillis):使用当前正在执行的线程以指定的毫秒数暂停(暂停停止执行).

注意:

voidwait()

voidnotify()

概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同重点:有效的利用资源

1资源类:包子类

2生产者(包子铺)类:是一个线程类,可以继承Thread

true:有包子

false:没有包子

3消费者(吃货)类:是一个线程类,可以继承Thread

false:没有包子

true:有包子

4测试类:

线程池概念:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多的资源。

线程池:容器-->集合(ArrayList,HashSet,LinkedList,HashMap)

Threadt=list.remove(0);返回的是被移除的元素,(线程只能被一个任务使用)Threadt=linked.removeFist();list.add(t);linked.addLast(t);在JDK1.5之后,JDK内置了线程池,我们可以直接使用合理利用线程池带来的好处:

线程池的代码实现:JDK1.5之后提供的

java.util.concurrent.Executors;线程池的工厂类,用来生成线程池Executors类中的静态方法:

staticExecutorServicenewFixedThreadPool(intnThreads)创建一个可重用的固定线程数的线程池参数:

intnTherad:创建线程池中包含的线程数量返回值:

ExecutorService接口,返回的是ExecutorService接口的实现类对象,我们可以使用ExecutorService接口接收(面向接口编程)java.util.concurrent.ExecutorService:线程池接口

submit(Runnabletask)提交一个Runnable任务用于执行关闭/销毁线程池的方法

voidshutdown()线程池的使用步骤:ExecutorServicees=Executors.newFixedThreadPool(2)es.submit(newRunnableImpl());//创建了一个新的线程执行Lambda表达式函数式编程思想概述---强调做什么,而不是以什么形式做

面向对象的思想:

函数式编程思想

publicclassCaiNiao{publicstaticvoidmain(String[]args){//匿名内部类,实现多线程//Runnabletask=newRunnable()Runnabletask=newRunnable(){@Overridepublicvoidrun(){//覆盖重写抽象方法System.out.println(Thread.currentThread().getName()+"新线程创建了");System.out.println("多线程任务执行!");}};newThread(task).start();//开启线程}}匿名内部类的好处与弊端

publicclassCaiNiao{publicstaticvoidmain(String[]args){//匿名内部类,实现多线程//Runnabletask=newRunnable()newThread(newRunnable(){@Overridepublicvoidrun(){//覆盖重写抽象方法System.out.println(Thread.currentThread().getName()+"新线程创建了");System.out.println("多线程任务执行!");}}).start();//开启线程}}Lambda写法()->{}

publicclassCaiNiao{publicstaticvoidmain(String[]args){//匿名内部类,实现多线程//Runnabletask=newRunnable()newThread(()->{//覆盖重写抽象方法System.out.println(Thread.currentThread().getName()+"新线程创建了");System.out.println("多线程任务执行!");}).start();//开启线程}}Lambda表达式的标准格式由三部分组成:

解释说明格式:

Lambda表达式:是可推导,可以省略

可以省略的内容:

注意:要省略{},return,分号必须一起省略

newThread(()->{//覆盖重写抽象方法System.out.println(Thread.currentThread().getName()+"新线程创建了");}).start();//开启线程newThread(()->System.out.println(Thread.currentThread().getName()+"新线程创建了")).start();//开启线程

THE END
1.自学Java拿到15K的offer,掌握以下内容即可,阿里大佬的建议第十二步:学习网络编程 1. 网络编程的概述 2. 网络编程的三要素之ip地址(ipv4,ipv6) 3. InetAddress类的操作 4. 网络编程的三要素之端口和协议的详细解释 5. 网络参考模型 6. UDP协议发送与接收数据 7. 聊天小程序案例 8. UDP协议中广播与组播 https://maimai.cn/article/detail?fid=1742470146&efid=hHm9FsGrBuA3IAry2l0b_A
2.大数据与隐私范文11篇(全文)信息技术和互联网的发展, 社交网络和智能终端的普及, 物联网和云计算技术的应用带动了大数据时代的产生。 2013年中国大数据市场规模约为11.20 亿元; 2014 年中国大数据市场规模约为84 亿元, 主要由3 部分组成, 即大数据软件产值、 用于承载大数据应用的硬件产值, 以及大数据相关的专业服务产值; 而根据中国信息通信研究https://www.99xueshu.com/w/ikeyvzpyp86z.html
3.Tor浏览器评测:基本的匿名和保护个人隐私的上网方式Tor浏览器的重点是安全性、匿名性和用户安全。其中无涉及对速度的关注。 简而言之,Tor浏览器在速度方面的表现很差(换句话说,对于普通的网络冲浪者来说,它太慢了)。在考虑使用Tor时,了解这一点很重要,因为速度上的不足会对你的体验产生负面影响。 由于使用中继器连接到网络的性质,以及这组连接每次几乎都是随机的https://www.wbolt.com/tor-browser.html
4.FTP服务3.2 匿名用户案例 设置匿名用户访问的ftp服务(最大权限) 3.21 修改配置文件 vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES #开启匿名用户访问。默认开启 write_enable=YES #开放服务器的写权限(若要上传必须开启)。默认已开启 local_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码) anon_upload_enable=https://blog.csdn.net/weixin_71483812/article/details/125898217
5.网络道德失范(精选十篇)发布信息者不分年龄, 个人或组织都可以从事许多网络活动, 而且他们从事这些活动时完全可以匿名或者译名的形式。再比如道德和法律规范难以统一。由于网络是一个全世界共享的资源, 且每个国家和地区的生活习惯、道德准则、现实社会中的法律规范都各不相同, 所以也无法判定某个国家的某个网络行为的主体就一定做了什么不https://www.360wenmi.com/f/cnkeyfl5f18m.html
6.个人信息匿名化制度的反思与改进个人信息匿名化制度的反思与改进 为了在保证个人信息安全的同时促进其效用价值的发挥,应当提升匿名化措施后的信息不被去匿名化的水平,并在发现存在去匿名化风险时及时进行再匿名化处理。 作者简介: 夏庆锋,安徽大学法学院副教授、安徽网络法治研究中心研究人员。https://www.secrss.com/articles/70304
7.如何用网络平台发匿名手机短信腾讯云开发者社区二级市场允许人们匿名买卖会员,与此同时,无须与中心的金融机构,比如信用卡、借记卡交互,或买卖完全匿名的银行账号,比如匿名协议代币如Zcash、Monero、PIVX等。3、通用治理协议 很多组织都创建了代币,并有计划用它作为平台治理,一般都有类似的用户场景和案例。比如,Wikipedia和Reddit都创建了代币,它们有类似的治理和https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B9%B3%E5%8F%B0%E5%8F%91%E5%8C%BF%E5%90%8D%E6%89%8B%E6%9C%BA%E7%9F%AD%E4%BF%A1
8.大厂被曝年后裁员,13岁的微博还“撑”得住吗?2)“匿名”社交带来的弊端 第二个原因,则是微博的交流环境正在逐渐“恶化”: 首先,微博其实仍是实行「一人一号」的实名制,但“匿名”情况仍然严重。 比如随便在网络上搜索「微博账号」,就会有很多贩卖微博账号的网站,其中单号价格从 30 - 120 元不等。 https://www.niaogebiji.com/article-100325-1.html
9::个案调查与分析(上)对案件中涉及平台研究方向的三个主题--告知权、辩护权、刑讯逼供等司法实践中的问题进行了个案和整体调查结果分析,同时结合京鼎所多年的刑事司法实务,对相关问题进行了综合评析,从而在个案基础上揭示出目前中国相关程序立法和司法实践中的典型违法行为和制度漏洞,为中国刑事诉讼法的全面修改提供了基础而真实的案例和实践http://iolaw.cssn.cn/xx/201908/t20190808_4953470.shtml
10.政治小论文(通用12篇)“在互联网上,没人知道你是一条狗。”匿名性是社交媒体的重要特点之一,社交媒体中真假信息难以辨别,许多虚假信息的发出者都使用匿名的方式,很难追溯来源。匿名带来的自由,让不少社交网站成为粗野言语、低级趣味的“垃圾场”,一个现实生活中彬彬有礼的谦谦君子,可能在社交媒体上摇身一变成为一个“网络暴民”。在以往https://mip.wenshubang.com/lunwenfanwen/495236.html
11.《辩论赛:赞成网络实名制》.doc我方坚持认为网络实名制是网民在登陆因特网时必须提供真实姓名与有效证明并以之示人的制度,评判它利弊的标准在于是否满足在不侵害公民权益的同时,促进社会文化的进步与发展。我方一直承认网络实名制有其固有的优点,但这些有点均是建立在其巨大弊端上的。对方一直在和我们强调“前台匿名后台实名”的部分实名制,那么我是https://max.book118.com/html/2019/1130/6045011023002130.shtm
12.电视的弊英语作文总之,网络有利益也有弊端,这必要每小我私家亲身己去掌握。一旦出神就会变的渺茫,无论是学习照旧举动范例都市变的粗犷,以是我以为网络游戏弊端多,利益少,我们应该少玩网络游戏才气更好地治理亲身己,到时间不要说网络害了你。网络没错,只是你亲身己没有精确使用,才毁了亲身己的前程啊! https://www.xdyy8.com/wenxue/zuowen/69244.html
13.猫狗案例加入跳高功能分析JAVA初级入门视频教程9-9 多态的弊端 9-10 多态中向上转型和向下转型 9-11 孔子装爹案例讲解多态现象 9-12 多态继承中的内存图解 9-13 多态中的对象变化内存图解 9-14 猫狗案例多态版 9-15 南北方人案例 9-16 多态的练习题看程序写结果 9-17 抽象类的引入 9-18 抽象类的特点 9-19 抽象类的成员特点 9-20 抽象类练习https://www.php.cn/code/9571.html
14.高科技侦查之利弊权衡及其规制搜集与存贮资料可能在被搜集人员不知情,从而无法表明拒绝的情况下进行,这使公民可能在公安机关面前成为信息完全暴露的“透明人”,完全失去其在社会中的“匿名”状态,而公民应有的隐私权则意味着非具法定事由与非经法定程序,其“匿名状态”不受国家机关的影响与破坏。侦查机关无视公民同意与否的意愿,将其个人信息纳入http://www.110.com/ziliao/article-347777.html