⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread.txt

📁 该部分主要使关于corejava的基础知识
💻 TXT
字号:
1 进程:一个运行着的程序;	有独立的内存空间2 线程:进程的一个执行流程;	多个线程共享相同的内存空间	代码的运行最终都体现都是 线程的运行	线程 减少内存的占用 和 提高运行效率(并发运行,所谓并发并不是同一时刻		运行多个线程,只是多个线程之间的切换速度非常快,让人感觉是同时运行而已)	单个CPU某个时刻只能运行一个线程	例如:java Test		1)启动虚拟机进程		2)虚拟机进程 创建 main 线程		3)由 main 线程 执行对应类的  main()方法3 线程运行时的特征:	1)使用 start()方法启动线程	2)一个线程对象只能启动一次	3)尽量不要重写 start()方法	4)多个线程可共享 同一个对象 的实例变量或静态变量4 线程编写:					Thread				Runnable	1线程类			继承Thread,重写run()		  实现Runnable,实现run()	线程对象	   Mythread t = new Mythread();      Mythread t = new Mythread();	启动线程		t.start()                     new Thread(t).start;5 线程状态:	1)初始状态:线程类刚实例化;	2)就绪状态:线程对象 执行start()方法  (等待CPU权限)	3)运行状态:拿到CPU 运行线程	4)阻塞状态:		a: 调用sleep()或join();		    	sleep()仍然持有锁,仅交出CPU执行权		b: 调用wait();			wait()释放锁,交出CPU执行权			进入对象的等待池(等待notify,然后进入锁池)		c: 拿到CPU执行权,但未拿到锁,进入对象的锁池			5)死亡状态:线程运行完run()方法代码6 并发访问问题:	多个线程访问 实例变量或静态变量 而引起单个线程中变量值前后不一致		解决方法:加锁 synchronized 把多行语句(一般对实例变量进行操作)作为一个整体,			  即便线程交出CPU执行权,其他线程也不能执行这些代码		public void m(){		语句行1		synchronized(this){		语句行2		语句行3		}		语句行4	}	eg:	public synchronized void m(){		语句行1		语句行2		语句行3	}	public synchronized void n(){		语句行1		语句行2		语句行3	}//此时,锁的持有者为 this 对象.假若执行m方法的第2句时被阻塞了,但是m方法并没有结束。	锁的持有者并没有改变,所以 n方法仍然得不到锁,所以仍然处于 锁池 当中		public class A{		static int i=10;		synchronized static void setI(int j){			i=j;		}	}//此时,锁的持有者为 A的类对象(类加载的时候)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -