多线程知识点总结

1.进程和线程的区别

  • 进程:是程序的执行过程,具有动态性,即运行的程序就叫进程,不运行就叫程序;
  • 线程:系统中的最小执行单元,同一进程中有多个线程,线程可以共享资源,一旦出现共享资源,必须注意线程安全!!

 Java线程分为两类,一类是守护线程,典型是垃圾回收GC;第二类是用户线程,当JVM中都是JVM守护线程,那么当前的JVM将退出。

2.线程创建的两种方式,继承Thread类、实现Runnable接口

2.1继承Thread类

 即创建的线程类继承Thread类,重写其中的run方法,若在主类中调用线程的话,则new出线程类,调用它的start方法即可,这里的start方法完成了两个工作:启动子线程,调用子线程的run方法;如下列:

//线程类
class TestThread extends Thread {
   
	@Override
	public void run() {
   
		for(int i = 1; i <= 100; i++){
   
			if(i % 2 == 0){
   
				System.out.println(Thread.currentThread().getName() + ":" + i);
			}
		}
	}
}

主类中调用:

TestThread myThread = new TestThread();
TestThread2 myThread2 = new TestThread2();
myThread.setName("偶数线程");//为线程命名
myThread2.setName("奇数线程");
myThread.start();//启动线程
myThread2.start();
Thread.currentThread().setName("主线程");//Thread.currentThread()表示当前的线程
for(int i=1;i<=100;i++){
   
	System.out.println(Thread.currentThread().getName()+ ":" + i);
}

2.2实现Runnable接口

 即创建的线程类实现Runnable接口,实现其中的run方法,若在主类中调用线程的话,则new出线程类,这里注意不能直接调用它的start方法,而是通过Thread 线程名 = new Thread(new出来的类),然后调用这个线程的start的方法才能启动线程,反之线程的启动该必须调用start方法!比extends Thread类的方法略微复杂,但这种方式更具优势(下面在做具体说明),比如:

class TestThread2 implements Runnable{
   

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

然后调用时一定注意,不是直接调用start方法,

TestThread2 myThread2 = new TestThread2();
Thread t2 = new Thread(myThread2);
t2.setName("奇数线程");//为线程命名
t2.start();//启动线程
Thread.currentThread().setName("主线程");//Thread.currentThread()表示当前的线程
for(int i=1;i<=100;i++){
   
	System.out.println(Thread.currentThread().getName()+ ":" + i);
}

3.线程中的几个常用的方法以及其生命周期

3.1几个常用的方法:

注: t为一个线程的名字,有如下说明

  1. t.yield(),会使t线程释放当前cpu资源,但如果有锁的话他不会释放锁;
  2. t.join(),使当前的线程停下来,启动并执行t线程,只有当t线程完全执行完后,当前线程才可以继续执行;
  3. t.sleep(i),显示的让t线程睡眠i毫秒,sleep方法执行期间不会释放他的锁;
  4. 线程通信过程中的几种方法:
  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值