java学习笔记第27天2018.09.29

Debug:
F6:下一步
F5:进入到方法中
F7:跳出方法
Junit:
@Test:方法测试
@Before和@After分别实在@Test执行前和执行后执行。
@BeforeClass和@AfterClass需要用在静态方法上,分别是在类加载和程序结束各执行一次
多线程:
进程:正在运行中的程序
线程:属于进程,是进程中一个可以独立运行的代码片段

进程需要依赖cpu执行,cpu某一时刻只能执行一个进程,我们看到的多个进行并发运行的现象

,是因为cpu做着告诉的切换动作。
实质一个进程可由多个线程组成,cpu实质切换的每个进程中的线程。

进程中只是有一个线程-----单线程程序
进程中有多个线程----多线程程序

创建线程的方式:
	1.继承Thread
		1.定义类继承Thread
		2.在类中重写run方法
		3.在main方法中,创建Thread的子类对象,并调用start方法启动线程

		
	2.实现接口Runnable
		1.定义类实现Runnable接口
		2.实现run方法
		3.创建Thread对象,并将实现给传递给Thread对象
		4.调用start方法启动线程

	建议使用实现接口方式,实现程序的多线程
	继承弊端:
		1.java是单继承,不能再去继承其他类
		2.破坏了继承体系

多线程出现的数据安全问题:
	同步代码块解决:
	synchronized(对象锁){
		共享数据代码
	}
	
	好处:解决了多线程的安全问题
	弊端:效率降低了

	前提:
	1.两个或者是两个以上的线程
	2.使用的是同一个锁对象
单例模式:
	饿汉式:
	class Test1{
		private static final Test1 t = new Test1();
		private Test1(){}
		public static Test1 getInstance(){
			return t;
		}
	}
	弊端:如果想要使用类中的其他成员,而不需要对象时,造成空间浪费
	懒汉式:
	class Test2{
		private static  Test2 t = null;
		private Test2(){}
		public static Test2 getInstance(){
			if(t == null)
				t = new Test2();
			return t;
		}
	}
死锁:
	程序卡到某个地方,不继续向下执行。
	注意:开发中不能写出死锁。
	锁的嵌套容器出现死锁。

synchronized:
	修饰符,可以修饰方法,修饰的方法具备了同步的特性,也会有锁。
非静态同步方法的锁对象是:this
静态同步方法的锁对象是:类名.class    

线程的生命周期:
	新建状态:new Thread()
	可运行状态:start(),有执行资格,等待cpu的调度
	正在运行状态:执行run()
	终止状态:run()结束,stop()
	阻塞状态:主动放弃执行资格,cpu不再调度
		   sleep,wait,join
package day20;
//共享代码块
class MyTicket implements Runnable{
	private int ticket = 100;
//	Object obj = new Object();
	@Override
	public void run() {
		while(true){
//			synchronized (obj) {  //t1 t2
//				if(ticket > 0) {
//					System.out.println(Thread.currentThread().getName()+"...."+ticket);
//					ticket--;
//				}
//			}
			
			show();
		}
	}
	
	public synchronized void show(){  //this
		if(ticket > 0) {
			System.out.println(Thread.currentThread().getName()+"...."+ticket);
			ticket--;
		}
	}
}

public class Demo06 {
	public static void main(String[] args) {
		MyTicket my = new MyTicket();
		Thread t1 = new Thread(my);
		Thread t2 = new Thread(my);
		t1.start();
		t2.start();
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43117449/article/details/82904883