java体系化课程【基础篇】22 多线程

java学习笔记

进程:正在运行的程序,一个应用程序再内存中的在执行区域。
线程:进程中的一个执行控制单元,执行路径

一个进程可以又一个线程,也可以有多个线程。

单线程:安全性高,效率低。
多线程:安全性低,效率高。

多线程案例:360,讯雷等。

多线程的实现方式:thread类

cpu执行程序的随机性
线程类:

 package test4;

public class test4_2 extends Thread{
	public void run(){
		for(int i=0;i<100;i++){
			System.out.println(getName()+":"+i);
		}
	}
}

执行线程类:

package test4;

public class test4_3 {
	public static void main(String[] args) {
		//创建线程实例
		Thread mt=new test4_2();
		mt.setName("张三");
		//启动
		mt.start();
		Thread mt2=new test4_2();

		mt2.setName("张四");
		//启动
		mt2.start();
	}

}

第二种方式

package test4;

public class mythread2 implements Runnable {

	public void run() {
		for (int i = 0; i < 100; i++) {
			Thread t=Thread.currentThread();
			System.out.println(t.getName()+":"+i);
			
		}

	}

}

package test4;

public class threaddemo {
	public static void main(String[] args) {

		mythread2 mt=new mythread2();
		Thread t=new Thread(mt);
		t.setName("李四");
		t.start();
		mythread2 mt2=new mythread2();
		Thread t2=new Thread(mt2);
		t2.setName("李1");
		t2.start();
	}
}

模拟火车站售票
同步:安全性高,效率低
非同步:安全性低,效率高。
synchronized (mutex) {}同步代码块
或者方法用synchronized修饰,再void之前。
非静态同步方法的锁对象是this。
静态方法随着类的加载而加载,没有this,是当前对象的字节码对象。
同不方法:使用synchronized修饰的方法,一旦被一个线程访问,则全部锁死,其他线程无法访问。

package test4;

public class ticketthread implements Runnable {

	int tickets=100;
	Object obj=new Object();
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			synchronized (obj) {
				if(tickets>0){
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
		System.out.println(Thread.currentThread().getName()+":"+tickets--);}
			}
		}
	}
}

package test4;

public class tickettest {
	public static void main(String[] args) {
		ticketthread tt=new ticketthread();
		Thread t1=new Thread(tt);
		t1.setName("A : ");
		Thread t2=new Thread(tt);
		t2.setName("B : ");
		Thread t3=new Thread(tt);
		t3.setName("C : ");
		t1.start();
		t2.start();
		t3.start();
	}
}

线程的生命周期:
生命周期:一个对象的生老病死。
新建,创建线程对象—》就绪,具备了执行条件,没有具备执行权利—》(等待 wait(),notify() )—》运行,具备了执行条件,具备了执行权利—》死亡,线程对象变成了垃圾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值