Java线程问题
来源:互联网 发布:windows访问samba拒绝 编辑:程序博客网 时间:2024/04/29 16:03
1.什么是Java线程
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
2.线程和进程有什么区别
线程是进程的子集,一个进程有多个线程,多个线程共享进程的内存空间,每条线程执行不同的任务,不同
的进程使用不同的内存空间。
3.实现线程的方法
继承Thread类,实现runnable接口。Java不能多重继承,但是能实现多个接口,故实现runnable接口。
4.Thread 类中的start() 和 run() 方法有什么区别
start()方法将当前线程纳入线程调度,使当前线程可以开始并发运行,也就是就绪状态。当线程获取时间片段后
会自动执行run()方法,也就是运行状态。
5.sleep和wait有什么区别
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,
到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,线程对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此
对象发出 notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁,也就是处于就绪状态;
6.并发原理:(也就是所谓的异步)
多个线程同时运行只是我们感官上的一种表现。事实上线程是并发运行的,OS将时间划分为很多时间片段,尽可能
均匀分配给每一个线程,获取时间片的线程被CPU运行,而其他线程等待。所以微观上是走走停停,宏观上是都在
运行,这种现象叫并发,但不是绝对意义上的“”同时发生“”;
7.在Java当中,线程通常有五种状态,创建,就绪,运行,阻塞和死亡。
创建:生成线程对象,并没有调用该对象的start()方法,这时线程处于创建状态;
就绪:调用start()方法后,纳入线程调度,该线程进入就绪状态;从等待或者睡眠中回来之后,也会处于就绪状态;
运行:线程调度程序将就绪状态的线程设置为当前线程,此时线程进入运行状态,开始运行Run()中代码;
阻塞:线程正在运行的时候,被暂停。sleep()、suspend()、wait()等都可导致线程阻塞;
死亡:如果一个线程在run()方法结束,或者调用stop()方法,该线程就会死亡;
8.sleep()方法:该方法会使当前线程进入阻塞状态毫秒数,然后当前线程会重新进入Runnable(就绪)状态,该
方法会抛出InterruptException。
yield()方法:该方法使当前线程主动让出CPU时间片段回到Runnable状态,等待分配时间片。
join()方法:用于等待当前线程结束,执行另一个线程,会抛出InterruptException。
9.多线程的并发安全问题:
多个线程并发读写同一个临界资源会发生多线程并发安全问题;
10.线程同步(就是为了解决多线程并发安全问题)
synchronized关键字 给代码加锁或者给方法加锁;synchronized关键字是Java中的同步锁;
11.锁机制:Java提供了一种内置的锁机制来支持原子性。
12.什么是线程池以及线程池的作用和使用:
定义:线程池主要是通过控制执行的线程的的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面
取出任务执行。
作用:减少创建和销毁线程的次数,每个工作线程可以多次使用,可根据系统情况调整执行线程的数量,防止消耗过多内存。
使用:ExecutorService线程池接口
ExecutorService pool=Executors.常见线程池
- java线程问题
- java线程问题笔记
- Java 线程面试问题
- Java 线程面试问题
- Java 线程面试问题
- Java 线程问题
- Java线程问题
- java线程同步问题
- JAVA 线程问题
- Java 线程面试问题
- Java 线程面试问题
- Java 线程面试问题
- Java 线程面试问题
- java线程池问题
- java线程停止问题
- Java 线程面试问题
- java线程死锁问题
- java中的线程问题
- 三种编码解码的方法和区别
- hihocode_1082 沼跃鱼
- bzoj1016 最小生成树计数
- An example of a trading strategy coded using Quantmod Package in R
- http网络请求基本概念
- Java线程问题
- Python、PyCharm的安装及使用方法(Mac版)
- 大头车智慧物流系统(APP+TMS)新闻发布会圆满结束
- ubuntu chroot
- SQL中的ROUND函数
- 记录下Ripple solution文档里的支付流程(英文)
- 动态调用Webservice方式
- NLP算法之一(朴素贝叶斯实际部分,语言分类器)
- POJ 1456 Supermarket 贪心+优先队列