Java--多线程

1.多线程:如果一个程序的执行路径是多条的,那么这个程序就是多线程程序.
多线程的意义:提高CPU的使用率
并行:指逻辑上的同时,在一个时间段内.
并发:指物理上的同时,在一个时间点上.
***********************************************************************
2.面试题
Java程序是多线程的吗?
答:Java虚拟机的启动是多线程的
至少两条线程:
1)main方法可以被虚拟机识别
2)由于创建匿名对象的时候,只是在堆内存中开辟空间,里面对象最终会变成垃圾,需要垃圾回收器进行回收,通过gc()启动垃圾回收器---->垃圾回收线程
3.实现多线程的三种方式
方式(1):
1)自定义一个类MyThread,继承自Thread类
2)重写该Thread类中的run()方法:里面写一些耗时的操作
3)创建自定义类对象
4)利用自定义类对象启动线程
方式(2):
1)自定义一个类,该类实现Runnable接口
2)重写Runnable里的run()方法:写耗时操作
3)在main()方法中,创建该类的对象(统一资源)

4)创建Thread类对象,将自定义类对象作为统一对象进行传递,启动线程

方式(3):

1)创建线程对象对象:ExecutorService

2)自定义一个类实现Callable接口,实现call()方法(call方法的返回值与Callable的泛型一致)

3)在main方法提交submit(new M与Callable)

使用匿名内部类实现前两种方式

//继承自Thread类的匿名内部类的方式
		new Thread(){
			@Override
			public void run() {
				for(int x = 0 ;x <100 ; x ++){
					System.out.println(getName()+":"+x);
				}
			}
		}.start() ;
		
		//方式2:使用Runnable接口的方式
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				for(int x =0 ; x <100 ;x ++){
					System.out.println(Thread.currentThread().getName()+":"+x);
				}
				
			}
		}).start() ;
		
		
		//更有难度的
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				for(int x = 0 ; x <100; x ++){
					System.out.println("hello"+x);
				}
			}
		}){
			@Override
			public void run() {
				for(int x = 0 ; x < 100 ; x ++){
					System.out.println("world"+x);
				}
			}
		}.start() ;



4.解决线程问题三要素:
(1)程序是否是多线程的环境
(2)是多有共享数据
(3)是否对共享数据有多条语句进行操作
解决:synchronized(对象):同步机制
锁定操作:lock接口--->实现ReenTrantlock

5.多线程的弊端?
(1)线程安全,但是效率低   (2)容易产生死锁
解决:等待唤醒机制:生产者线程和消费者线程
问题:notify(),wait(),notifyAll():为什么不定义在Thread类中,而是定义在Object类中?
答:对于线程来说,同步锁的对象:任意对象,而且这写方法可以任意锁对象调用,所以这些类被定义在Object类中.

6.线程池的创建步骤:
(1)创建程序池对象:Exctutor工厂类
(2)提交任务:submit(new MyRunnable())方法
(3)结束程序池:shutdown()方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java程序设计》课程的题库资料,由贺州学院整理,可供学生期末课程复习使用,也可以供相关任课教师出卷使用。 内容示例为: 1. JAVA的源代码中定义几个类,编译结果就生成几个以“.class”为后缀的字节码文件。( ) 答案:√ [考点范围] JAVA简介 2. Java源程序是由类定义组成的,每个程序可以定义若干个类,但只有一个类是主类。( ) 答案:√ [考点范围] JAVA简介 3. 无论Java源程序包含几个类的定义,若该源程序文件以a.java命名,编译后只生成一个名为A的字节码文件。( ) 答案:× [考点范围] JAVA简介 4. Java字节码程序是可以在Java虚拟机上执行的。( ) 答案:√ [考点范围] JAVA简介 5. Java程序对计算机硬件平台的依赖性很低。( ) 答案:√ [考点范围] JAVA简介 6. Java可以用来进行多媒体及网络编程。( ) 答案:√ [考点范围] JAVA简介 7. Java语言具有较好的安全性和可移植性及与平台无关等特性。( ) 答案:√ [考点范围] JAVA简介 8. Java语言的源程序不是编译型的,而是编译解析型的。( ) 答案:√ [考点范围] JAVA简介 9. Java Application程序中,必须有一个主方法main(),该方法有没有参数都可以。( ) 答案:× [考点范围] JAVA简介 10. Java是面向对象的语言,对象是客观事物,对象与之是一一对应,它是很具体的概念。( ) 答案:× [考点范围] JAVA简介

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值