多线程之创建线程(二)

    咱们接着来。

   进程和线程的区别:

  •    进程:有独立的内存空间,进程中的数据存放空间(堆,栈)是独立的,但是至少包含一个线程。
  •    线程:堆空间是共享的,栈空间是独立的。线程消耗资源比进程小,相互之间可以影响,又被称为轻型的或微观的进程。

多线程的并发:

 现在知道在一个进程中有多个线程,宏观上多个线程同时运行,微观上面有先后顺序的。哪一个线程先被执行,完全取决于cpu的调度。所有我们可以把多线程的并发,看出是多线程在瞬间抢占cpu的资源,谁抢到谁运行。这也就造成了多线程的随机性。

而多线程作为一种多任务,并发的工作方式有什么优势?

  1. 提高应用程序的响应。
  2. 使多个cpu(多核)更加有效。OS会保证当线程不大于cpu的数目时,不同的线程运行于不同的cpu上。
  3. 改善程序结构。

创建线程和启动线程 :

1.继承java.lang.Thread类

public class ThreadTestone {
	public static void main(String[] args) {
		ThreadOne t1 = new ThreadOne();
		ThreadTwo t2 = new ThreadTwo();
			t1.start();
			t2.start();
	}
}
class ThreadOne extends Thread{
	public void run(){
		System.out.println("我是one线程");
	}
}
class ThreadTwo extends Thread{
	public void run(){
		System.out.println("我是two线程");
	}
}

2.实现Runnable接口


public class ThreadTesttwo {
	public static void main(String[] args) {
		RunThread t = new RunThread();
		Thread t1 = new Thread(t,"one");
		Thread t2 = new Thread(t, "two");
		t1.start();
		t2.start();
	}
	
}
class RunThread implements Runnable{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println(Thread.currentThread().getName()+"我是线程");
	}
	
}

对比一下继承和实现类创建线程的区别!

  1. 从完成功能上来看,两个都能实现。
  2. 从简单易用方面来看,继承方式更为简单。
  3. 继承方式无法共享同一份资源,而实现接口可以
  4. 在java中类是单继承的,但是接口可以多实现,所以接口更方便。

若:在2种场景之下只能使用runnable。

  1. 该类还需要继承其他类。
  2. 多个线程需要访问同一资源。

多线程会出现并发问题:多个线程并发访问同一个资源的时候,可能会出现线程安全的问题。 下一章来说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值