java线程基础知识

1.CPU核心数和系统线程数的关系

核心数:线程数 = 1 :1;因特尔提出超线程的概念 1 :2

CPU通过时间片轮转的调度方式来执行各个线程;线程之间的上下文切换一般会花费5k-2w个时钟周期;

2.进程和线程的区别
进程:进程是系统分配资源的最小单位,进程内部有多个线程,多个线程会共享进程资源
线程:CPU调度的最小单位,线程本身不拥有资源,从进程获取

3.并行和并发的区别
并行表示同一时刻的处理事情能力
并发表示在单位时间内可以处理事情的能力

4.高并发编程意义和注意事项
充分利用CPU资源;加快用户响应时间;有注意保持代码的模块化
共享资源,有可能存在冲突;死锁;太多线程,大部分时间用在切换,实际上降低效率;占用系统资源太多,搞垮机器

5.java天生就是多线程,线程有以下几种实现方式

1)继承Thread类实现多线程

public class MyThread extends Thread {
  public void run() {
   System.out.println("MyThread.run()");
  }
}

2)实现Runnable接口方式实现多线程

如果自己的类已经extends另一个类,就无法直接继承Thread,此时,必须实现一个Runnable接口

public static class UseRunnable implements Runnable{
		public void run() {
			String threadName = Thread.currentThread().getName();
			while (Thread.currentThread().isInterrupted()) {
				System.out.println(threadName + " is run!");
			}
		}
	}

3)使用Callable,Callable与Runnable最大的区别是可以有返回值

public static class UseCall implements Callable<String> {
		@Override
		public String call() throws Exception {
			System.out.println("I am implements Runnable");
			return "CallResult";
		}
	} 

6.java中,如何线程安全停止工作
java线程是协作式的,不是抢占试的;java这么设计的目的是为了让每个线程有时间处理剩余工作
自然状态:
1)自然执行完;2)抛出异常
手工停止:
不建议方式:
stop(),resume()无法保证线程资源的正常释放
suspend(),挂起,线程不会释放资源,容易造成死锁
建议方式:
interrupt() 中断一个线程,并不是强制关闭这个线程,只是将中断标志位设置为true
isInterrupted() 判定当前线程是否处于中断状态
static方法interrupted() 判断当前线程是否处于中断状态,并将中断标志位改为false
方法抛出InterruptedException时,线程的终端标志位会被复位成false

7.线程优先级
线程优先级的范围为1-10,缺省为5;优先级高的线程分配时间片的数量要高于线程优先级低的数量
使用setPriority可以设置线程优先级;但是不同操作系统对优先级的实现并不相同,甚至有的操作系统都忽略这个配置,所以这是一个不可靠的配置

8.守护线程

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 
用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:
只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。
Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器)。
User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了,所以,守护线程是和主线程一起退出的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值