Java基础--并发编程基础(1)

1.多任务处理

多任务处理分为两种不同的类型:基于进程的多任务处理和基于线程的多任务处理。
进程:进程是运行的程序,是操作系统进行调度和资源分配的基本单元。进程有独立的内存空间,进程间的通信和进程间的上下文切换的开销比较大。
线程:进程由线程组成,线程是比进程更小的单元,是CPU进行调度的基本单元。线程之间共享一个进程的内存空间,线程间通信和上下文切换的开销相对较小。
虽然Java程序使用基于多进程的多任务环境,但是基于多进程的多任务处理并不是由Java控制的。不过,基于多线程的多任务处理是由Java控制的。

2.线程的优先级

Java为每个线程都指定了优先级,线程的优先级用于在上下文切换中决定把CPU的执行权交给哪个线程。
理论上,优先级高的线程将拥有更多的执行时间,而同优先级的线程有相同的运行时间。
Java中线程的优先级可以通过Thread类的setPriority(int p)方法设定优先级,优先级的取值区间为[1,10],1最低,10最高,5为默认优先级

3.获取操作当前线程

Java中使用Thread类的currentThread()方法来获取当前线程,返回值是一个Thread对象。
获取操作当前线程的代码如下:
public class MainThread {

	/*
	 * 所有的线程都是在主线程之上创建而来的
	 */
	public static void main(String[] args) {
		Thread t = Thread.currentThread();
		System.out.println(t);
		t.setName("My-mainThread");
		System.out.println(t);
	}
	/*
	 * 输出结果:
	 * Thread[main,5,main]
	 * Thread[My-mainThread,5,main]
	 * 中括号中依次是:[线程名称、线程优先级、线程所属线程组名称]
	 * 线程优先级可以设置,优先级越大越好,范围是[1,10],默认优先级是5
	 */
}

4.创建线程

创建线程有两种最基本方式(后续博文会探讨其他创建线程的实现):一种是扩展Thread类,然后重写run方法,然后创建该线程的对象,调用该对象的start方法即可使线程启动(start方法内部就是调用了run方法);一种是实现Runnable接口,然后实现run方法,然后创建线程类(把扩展了接口的类作为构造器参数传进去),然后调用该线程的start方法即可使线程启动,当然,在Java8之后,由于Runnable接口是一个函数式接口,可以使用lambda表达式更简单的使用第二种方式,本次还是使用旧式的,后续博文采用lambda表达式的形式。
实例代码如下:
public class CreateThreadsByTwoWays {

	public static void main(String[] args) {
		Thread t1 = new Thread(new T1());
		t1.start();
		Thread t2 = new T2();
		t2.start();
		for(int i = 0;i<6;i++){
			System.out.println("main Thrad... "+i);
		}
	}
	//运行结果
//	by implementing Runnable... 0
//	by extending Thread... 0
//	main Thrad... 0
//	by extending Thread... 1
//	by implementing Runnable... 1
//	by extending Thread... 2
//	main Thrad... 1
//	main Thrad... 2
//	by extending Thread... 3
//	by extending Thread... 4
//	by implementing Runnable... 2
//	by extending Thread... 5
//	main Thrad... 3
//	main Thrad... 4
//	main Thrad... 5
//	by implementing Runnable... 3
//	by implementing Runnable... 4
//	by implementing Runnable... 5

}
//实现Runnabl接口
class T1 implements Runnable{
	//在Java8中这种使用Runnable的方式不多了,使用lambda表达式创建更方便
	@Override
	public void run() {
		for(int i = 0;i<6;i++){
			System.out.println("by implementing Runnable... "+i);
		}
	}
}
//扩展Thread类
class T2 extends Thread{
	
	@Override
	public void run(){
		for(int i = 0;i<6;i++){
			System.out.println("by extending Thread... "+i);
		}
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值