线程

一、多线程概念
1.进程:在服务器上每一个独立运行的应用程序(例如 播放音乐,写文档,聊QQ),在同一时间点,CPU只能为一个进程分配资源,只有获取cup资源的进程才可以执行,其他进程处于抢占CPU资源的状态
2.线程: 在一个进程中,执行某个任务的子程序,一个进程可以包含多个线程
3.多线程:在某个应用程序中,创建的独立子程序
当它所属的进程已抢到资源,该进程会将资源分配给某一个线程(原则上,多个线程会相互抢占它们进程的资源)
4.程序: 实现某个业务逻辑的代码块, 程序是静态的,只有基于进程才可以动态的运行
5.多任务: 站在操作系统的角度,多任务就是多个进程,站在一个进程的角度,多任务就是多个线程

多个子程序: 只有一个 Main方法(主线程), 多个子程序(子线程),它们和main之间相互抢占资源

二、如何实现多线程
1.通过继承类或实现接口
方法一: 继承一个Thread类 ,重写 run方法
方法二: 实现一个 Runnable接口,实现run方法

多线程优势
1、解决频繁交互,实现逻辑困难的程序, 实现并发访问量
2、程序吞吐量得到改善 (假如一个线程吞吐量是10次,可以增加到10个线程吞吐量达到100次)

两种实现线程方式的区别
1、继承Thread类不能继承其他类,实现接口还可以实现其他类或继承类,接口方式可扩展性高
2、接口方式 可以实现对一个资源的共享,也会存在线程同步的问题

需要注意的是:
虽然在两种方法中,都要操作run()方法,
但是在线程运行的时候我们用的是:start()方法,开启线程,而不是run();

一些代码示例:
第一种方法:继承Thread类:
/**
*

  • @author dch

*/
//多线程–子线程
public class MyThread extends Thread {

public  void run(){
	for (int i = 0; i < 10; i++) {
		System.out.println("我是子线程1--大哥听到请回答");	
	
		//线程休眠2s ,会释放资源,这时候就是堵塞状态
		if(i==5){
			try {
				System.out.println("我子线程就是个弟弟");
				Thread.currentThread().sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

}

/**
*

  • @author dch

*/
//主方法–主线程
public class ThreadMain {

public static void main(String[] args) throws Exception {
	
	//创建多线程
	MyThread mt = new MyThread();//创建状态
	mt.start();//就绪状态
	
	
	
	for (int i = 0; i < 10; i++) {
		System.out.println("你是我爸爸--主线程");
		if(i==5){
			mt.join();
		}
	}
	
}

}

第二种;实现一个 Runnable接口
/**
*

  • @author dch

*/
//线程实现runnable的接口
public class MyThread2 implements Runnable{

@Override
public void run() {
	// TODO Auto-generated method stub
	for (int i = 0; i < 100; i++) {
		System.out.println("我是子线程2,大哥收到请回答");
		
	}
}

}

/**
*

  • @author dch

*/
//thread主线程2
public class ThreadMain2 {

public static void main(String[] args) {
	
	//使用接口实现要借助thread
	MyThread2 mt2 = new MyThread2();
	
	Thread t2 = new Thread(mt2);
	
	//这里就可以使用start方法了啊
	t2.start();
	
	for (int i = 0; i < 100; i++) {
		
		System.out.println("我是主线程,子线程收到请回答");
	}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值