Java面试题:线程实现的两种方式及匿名内部类实现

QUESTION:线程实现的两种方式及匿名内部类实现

ANSWER:

1、多线程两种实现方式
(1)继承Thread
    * 定义类继承Thread
    * 重写run方法
    * 把新线程要做的事写在run方法中
    * 创建线程对象
    * 开启新线程, 内部会自动执行run方法

public class testThread2 {public static void main(String []args){Test t=new Test();//t.run();                    //run()方法是普通方法,要调用start()方法才会开始线程t.start();for (int i = 0; i <3000000 ; i++) {System.out.println("b");}}
}
class Test extends Thread{@Overridepublic void run() {for (int i = 0; i <3000000; i++) {System.out.println("a");}}
}


(2)实现Runnable
    * 定义类实现Runnable接口
    * 实现run方法
    * 把新线程要做的事写在run方法中
    * 创建自定义的Runnable的子类对象
    * 创建Thread对象, 传入Runnable
    * 调用start()开启新线程, 内部会自动调用Runnable的run()方法

public class testThread3 {public static void main(String []args){Test1 t=new Test1();Thread td=new Thread(t);td.start();for (int i = 0; i <3000000 ; i++) {System.out.println("b");}}
}
class Test1 implements Runnable{@Overridepublic void run() {for (int i = 0; i <300000 ; i++) {System.out.println("a");}}
}

多线程两种实现方式的区别
实现原理:
    继承Thread    :    由于子类重写了Thread类的run(), 当调用start()时, 直接找子类的run()方法
    实现Runnable:    构造函数中传入了Runnable的引用, 成员变量记住了它, start()调用run()方法时内部判断成员变量Runnable的引用是否为空, 不为空编译时看的是Runnable的run(),运行时执行的是子类的run()方法
优缺点:
    继承Thread    :
        好处:    可以直接使用Thread类中的方法,代码简单
        弊端:    如果已经有了父类,就不能用这种方法
    实现Runnable:
        好处:    即使自己定义的线程类有了父类也没关系,因为有了父类也可以实现接口,而且接口是可以多实现的
        弊端:    不能直接使用Thread中的方法需要先获取到线程对象后,才能得到Thread的方法,代码复杂

 

多线程的安全问题及解决方案
    问题:当多线程并发, 有多段代码同时执行时,数据会产生错乱。
    方案:我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步。

public class testThread12 {public static void main(String []args){final Print p=new Print();new Thread(){@Overridepublic void run() {while (true){p.print1();}}}.start();new Thread(){@Overridepublic void run() {while (true){p.print2();}}}.start();}
}
class  Print{test3 t=new test3();public void print1(){//synchronized (new test3())synchronized (t){               //同步代码块,锁机制,锁对象可以是任意的,不是匿名对象,因为匿名对象地址不一样System.out.print("传");System.out.print("智");System.out.print("播");System.out.print("客");System.out.print("\r\n");}}public void print2(){synchronized (t){System.out.print("用");System.out.print("心");System.out.print("创");System.out.print("造");System.out.print("\r\n");}}
}
class test3{}


死锁的产生原理
    多线程同步的时候, 如果同步代码嵌套, 使用相同锁, 就有可能出现死锁

更多关于线程的内容请查看本博主博客:

https://blog.csdn.net/yang13563758128/article/details/87261957

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国发布20项重大科技趋势,将在未来30年改变世界!

来源&#xff1a;DeepTech深科技&#xff08;ID&#xff1a;mit-tr&#xff09;编辑&#xff1a;net百晓生这份报告是美国陆军公布的一份长达35页的《2016-2045年新兴科技趋势报告》。它是美国在过去几年由政府机构、咨询机构、智囊团、科研机构等发表的32份科技趋势相关研究调…

JAVA设计模式总结

单例设计模式&#xff1a;保证类在内存中只有一个对象。 * * * 如何保证类在内存中只有一个对象呢&#xff1f; * * (1)控制类的创建&#xff0c;不让其他类来创建本类的对象。private * * (2)在本类中定义一个本类的对象。Singleton s; * * (3)提供公共的访问方式。 publi…

对话式人工智能发展的真正限制是人类的耐心

来源&#xff1a;AI前线 作者&#xff1a;Jiang Chen&#xff0c;Moveworks 机器学习副总裁译者&#xff1a;王强策划&#xff1a;刘燕从 Siri 到 Alexa 再到谷歌助手&#xff0c;今天我们已经被各种人工智能系统包围了。它们的设计目标只有一个&#xff1a;理解我们。我们已经…

Java面试题:单例设计模式、适配器模式的不同方式

QUESTION:单例设计模式、适配器模式的不同方式? ANSWER: 1、单例设计模式,适配器设计模式 单利设计模式: 在java中&#xff0c;单例模式是指为了保证类在内存中只有一个对象&#xff0c;而形成的一种固有的代码模式! 适配器设计模式: 在java中&…

Nature子刊:科学家在类脑芯片上实现类似LSTM的功能,能效高1000倍

来源&#xff1a;机器学习研究组订阅格拉茨技术大学的计算机科学家在 Nature 子刊上发表的一篇论文表明&#xff0c;他们找到了一种在神经形态芯片上模拟 LSTM 的方案&#xff0c;可以让类脑神经形态芯片上的 AI 算法能效提高约 1000 倍。随着智能手机的普及&#xff0c;手机游…

JAVA:网络编程总结

目录 01_网络编程(网络编程概述)(了解) 02_网络编程(网络编程三要素之IP概述)(掌握) 03_网络编程(网络编程三要素之端口号概述)(掌握) 04_网络编程(网络编程三要素协议)(掌握) 05_网络编程(Socket通信原理图解)(了解) 06_网络编程(UDP传输)(了解)07_网络编程(UDP传输优化…

重磅!0.2nm路线图来了!详细讲解技术实现!

来源&#xff1a;tomshardware编译&#xff1a;EETOP世界上最先进的半导体研究机构 Imec 最近在比利时安特卫普举行的未来峰会上分享了其亚1nm和晶体管路线图。该路线图让我们大致了解了到 2036 年Imec将在其实验室与台积电、英特尔、三星和 ASML 等行业巨头合作研发的下一个主…

JAVA:反射总结

01_反射(类的加载概述和加载时机) 02_反射(类加载器的概述和分类) 03_反射(反射概述) 04_反射(Class.forName()读取配置文件举例) 05_反射(通过反射获取带参构造方法并使用) 06_反射(通过反射获取成员变量并使用) 07_反射(通过反射获取方法并使用) 08_设计模式(模版(Tem…

软件工程论文实现

QUESTION:软件工程论文实现? ANSWER: 目录 QUESTION:软件工程论文实现? ANSWER: 一、论文的书写格式规范化要求 二、论文的排版格式规范化要求 三、论文书写、排版、打印规范化要求样式 一、论文的书写格式规范化要求 论文本身由论文题目、作者、中文摘要、关键词、正文、…

问题即答案-解决棘手问题的突破性方法

来源&#xff1a;混沌巡洋舰 “问题”&#xff08;question&#xff09; 中包含一个非常美妙的词&#xff1a;“ 探索”&#xff08;quest&#xff09;。我太喜欢这个词了。——埃利威塞尔&#xff08;Elie Wiesel&#xff09;有些人常常感觉一些真相事关重大&#xff0c;自己应…

CSS:盒子模型和清除float浮动的三种常用方法

目录 一&#xff1a;浮动产生原因&#xff1a; 二&#xff1a;浮动产生副作用: 三&#xff1a;浮动解决方法&#xff1a; QUESTION:CSS盒子模型清除浮动? ANSWER: 一&#xff1a;浮动产生原因&#xff1a; 一般浮动是什么情况呢&#xff1f;一般是一个盒子里使用了CSS fl…

逼真度超越「AI设计师」DALL·E 2!谷歌大脑推出新的文本生成图像模型Imagen

来源&#xff1a;AI科技评论作者&#xff1a;李梅、王玥编辑&#xff1a;陈彩娴文本生成图像模型界又出新手笔&#xff01;这次的主角是Google Brain推出的 Imagen&#xff0c;再一次突破人类想象力&#xff0c;将文本生成图像的逼真度和语言理解提高到了前所未有的新高度&…

JavaWeb笔记:Html总结

JavaWeb笔记:Html总结 目录 JavaWeb笔记:Html总结 一、html简介 二、html基本标签 三、html表单标签(重点) 一、html简介 1、html是什么 Html是用来描述网页的一种语言。 (1)HTML 指的是超文本标记语言 (Hyper Text Markup Language) (2)H…

量子技术推动新的传感器热潮

IMPERIAL COLLEGE LONDON/M SQUARED来源&#xff1a;IEEE电气电子工程师想象一下&#xff0c;传感器可以探测思想的磁场、帮助月球车探测月球岩石中的氧气&#xff0c;或者接收来自暗物质的无线电波。正如量子计算机可以从理论上找到经典计算机无法解决的问题的答案一样&#x…

JavaWeb笔记:CSS总结

JavaWeb笔记:CSS总结 目录 JavaWeb笔记:CSS总结 一、css的简介 二、css选择器 三、css属性 四、css盒子模型 一、css的简介 1、什么是css 层叠样式表&#xff0c;css是对html进行样式修饰语言 层叠&#xff1a;就是层层覆盖叠加&#xff0c;如果不同的cs…

0.2nm路线图来了!详细讲解技术实现!

来源&#xff1a;tomshardware世界上最先进的半导体研究机构 Imec 最近在比利时安特卫普举行的未来峰会上分享了其亚1nm和晶体管路线图。该路线图让我们大致了解了到 2036 年Imec将在其实验室与台积电、英特尔、三星和 ASML 等行业巨头合作研发的下一个主要工艺节点和晶体管架构…

JavWeb笔记:JavaScript总结

JavWeb笔记:JavaScript总结 目录 JavWeb笔记:JavaScript总结 一、js简介 二、基本语法 三、js内建对象 四、js的函数 五、js的事件 六、js的bom 七、js的dom 一、js简介 1、js是什么 2、js作用 3、组成 4、引入方式 二、基本语法 1、变量 2、原始数据…

走向认知发展的理性建构理论

Towards a Rational Constructivist Theory of Cognitive Development Fei Xu University of California, Berkeley来源&#xff1a;CreateAMind本文对认知发展理论——理性建构主义进行了综述。这种观点的基本原则如下:(a)初始状态:人类婴儿以一组原型概念的原语开始生命。这些…

JavaWeb笔记:JDBC总结

JavaWeb笔记:JDBC总结 目录 JavaWeb笔记:JDBC总结 一、JDBC概述 二、开发一个JDBC程序&#xff08;重要&#xff09; 三、JDBC常用的类和接口详解 1、java.sql.Drivermanager类 : 创建连接 2、java.sql.Connection接口&#xff1a;一个连接 3、java.sql.Statement接口:…

谷歌街景15年乾坤大挪移!带你穿越法老的金字塔

来源&#xff1a;机器学习研究组订阅最近两年多&#xff0c;整个世界都被一个共同对手折腾得够呛。有人咬牙坚持、有人躺平摆烂&#xff0c;有人祈求上天&#xff0c;还有人离开了这个世界。更多的人们则逐渐意识到&#xff0c;原来所谓「Good Old Times」离我们竟然如此之近&a…