java:多线程的基本概念

基本概念
1、进程:每个程序的执行单位就是一个进程,它包含了本应用程序运行所需要的一切资源
2、线程:程序的执行单元,程序使用cpu的基本单位
单线程:程序只有一条执行路径
多线程:程序有多条执行路径
3、进程和线程之间的关系
1)进程有操作系统进行管理,线程由进程来进行管理
2)不同进程之间是完全独立的,不同线程之间可能会发生并发冲突
3)不同进程之间是并发运行的,运行顺序由系统调度,随机执行
线程内部按照程序本身流程顺序执行,和线程调度没有关系。
4)进程可以说是线程的容器,一个进程可以由多个线程
创建线程方式
1、继承Thread
代码:

	public class UserThread extends Thread {
		public UserThread(String threadName) {
			super(threadName);	//调用Thread的构造方法
		}
		
		@Override
		public void run() {
			print();	// 该程序的主要任务就是运行print()方法
		}
		
		public void print() {
			for(int i = 0; i < 10; i++) {
				try {
					Thread.sleep(100);		// 让线程睡眠100毫秒
				} catch(InterruptedException e) {
					e.printStackTrace();
				}
				
				System.out.println(this.getName() + " : " + i);
			}
		}
		
		public static void main(String[] args) {
			UserThread thread1 = new UserThread("张三");
			UserThread thread2 = new UserThread("李四");
			//这是调用线程对象的run方法,不是启动线程
			//thread1.run();		
			//thread2.run();
			thread1.start();		//这才是真正的启动线程
			thread2.start();
		}
	}

2、使用Runnable

public class RunnableDemo {
		public static void main(String[] args) {
			MyRunnable runnable = new MyRunnable();
			Thread t1 = new Thread(runnable);		//创建线程对象
			t1.start();	//启动新线程
			
			for (int i = 0; i < 200; i++) {
				System.out.println("runnable" + i);
			}
		}
	}

线程优先级
低优先级:Thread.MIN_PRIORITY
默认优先级:Thread. NORM_PRIORITY
高优先级:Thread.MAX_PRIORITY
设置优先级:public final void setPriority(int newPriority);
查看优先级:public final int getPriority();
线程的生命周期
创建:创建新的线程对象
就绪:改线程位于线程池中,等待进程调度获取cpu的执行权
运行:正在执行线程中程序代码
阻塞:由于某种原因放弃cpu的执行权,暂时停止运行
死亡:线程执行完毕,或被强制退出
强制退出(不建议使用):suspend() resume() stop()
线程同步
在进行多线程程序设计时,还会遇到另一类问题,这就是如何控制相互交互的线程之间的运行顺序,即多线程间的同步
生产者消费者模式;
生产者:先看是否有数据,如果有就等待;没有就生产,生产完之后通知消费者来消费.
消费者:先看是否有数据,如果有就消费;如果没有就等待,通知生产者生产数据
线程互斥
一些并发运行的线程需要使用共享数据,这时就必须考虑使用共享数据的线程状态与行为,否则就不能保证共享数据的一致性,也就不能保证程序的正确性,需要引入线程互斥
线程死锁
死锁是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象,如果两个线程之间有多个共享对象,如果两个线程分别持有对方所需要的共享对象的锁,在试图获取对方线程所持有的共享对象的锁时,就有死锁的危险
其他问题
wait和sleep的区别?
wait是object的方法,同时释放对象上的wait锁
sleep是Thread的方法,不释放对象上的wait锁

发布了34 篇原创文章 · 获赞 21 · 访问量 1940

猜你喜欢

转载自blog.csdn.net/qq_44156131/article/details/103206807