Java多线程1(创建多线程)

首先是创建一个新的线程,根据Java1.7的API,这个工作非常的简单,新建一个类继承Thread类即可, API中有例子,可以直接照抄。具体步骤大致分为两步:

1. 继承Thread

2. 重写run方法


代码举例:

class Demo extends Thread{
	public void run(){
		//System.out.println("demo run");
		for(int i =1; i <60; i++){
			System.out.println("demo run ---" + i);
		}
	}
}
public class ThreadDemo {
	public static void main(String[] args){
		Demo d = new Demo();
		//创建一个线程
		d.start();
		for(int i =1; i <60; i++){
			System.out.println("sb ---" + i);
		}
	}
}

运行结果如下:

sb ---1
demo run ---1
sb ---2
demo run ---2
sb ---3
demo run ---3
sb ---4
sb ---5
demo run ---4
demo run ---5
demo run ---6
demo run ---7
demo run ---8
demo run ---9
demo run ---10
demo run ---11
demo run ---12
demo run ---13
demo run ---14
demo run ---15
demo run ---16
demo run ---17
demo run ---18
demo run ---19
demo run ---20
demo run ---21
demo run ---22
demo run ---23
demo run ---24
demo run ---25
demo run ---26
demo run ---27
demo run ---28
sb ---6
sb ---7
demo run ---29
sb ---8
demo run ---30
sb ---9
sb ---10
demo run ---31
sb ---11
demo run ---32
sb ---12
demo run ---33
sb ---13
demo run ---34
sb ---14
demo run ---35
sb ---15
demo run ---36
demo run ---37
sb ---16
demo run ---38
sb ---17
demo run ---39
sb ---18
demo run ---40
sb ---19
demo run ---41
sb ---20
demo run ---42
sb ---21
demo run ---43
sb ---22
demo run ---44
sb ---23
demo run ---45
sb ---24
demo run ---46
sb ---25
demo run ---47
sb ---26
demo run ---48
sb ---27
demo run ---49
sb ---28
demo run ---50
sb ---29
sb ---30
demo run ---51
sb ---31
demo run ---52
sb ---32
demo run ---53
sb ---33
demo run ---54
sb ---34
demo run ---55
sb ---35
demo run ---56
sb ---36
demo run ---57
sb ---37
demo run ---58
sb ---38
sb ---39
sb ---40
sb ---41
sb ---42
sb ---43
sb ---44
sb ---45
sb ---46
sb ---47
sb ---48
sb ---49
sb ---50
sb ---51
sb ---52
sb ---53
sb ---54
sb ---55
sb ---56
sb ---57
sb ---58
sb ---59
demo run ---59


可以进行多次运行, 每次的结果都明显的不同。这就是因为两个线程在抢占资源。

具体的原理是这样的,先到了main函数,创建一个新的线程,然后调用了start函数,start函数在Java的API里的解释如下:


start
public void start()
Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.

The result is that two threads are running concurrently: the current thread (which returns from the call to the start method) and the other thread (which executes its run method).

It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution.


所以意思就是JVM会调用run函数,从而开启这个线程。所以调用start的时候就会调用run,但是这个run函数我们已经进行了重写,现在的作用的打印一堆sb...

所以就变成了两个进程一个是打印demo run 一个是打印sb 这两个进程进行资源的抢占,二者谁能抢到说不好,因此多线程具有随机性,每次运行的结果也不相同。

在现代的操作系统中也存在这种问题,要解决需要多线程编程的知识,但是CPU毕竟是瓶颈,一旦解决了这个问题,那么瓶颈就变为了内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值