JAVA进程和线程详解

JAVA进程和线程详解

进程和线程

 进程

     进程就是一个在内存中独立运行的程序,有自己的地址空间。

 线程

     线程是进程内部单一的一个顺序控制流,是进程的子集。
     多线程:顾名思义,一个进程中的多个线程。
     线程的开始:当要运行一个程序时,JVM首先会找到main函数,然后从main;函数开始执行(也即是程序从main函数开始运行的)。

 创建线程的两种方法:

  第一种:

     定义一个类继承Thread,重写Thread中的run方法,run方法中存放自定义的要让该程序执行的代码。
例:

class Demo extends Thread{

	    public void run() {
	    			
	    	System.out.println(“自定义运行代码”)
	    	
	    	}
	    	
	    	
	    	}
	    	
	    	class ThreadDemo{
	    	
	    	Public static void main(String[] args){
	    	Demo d = new Demo();
	    	d.start();
	    	}
	    	
	    	}

  第二种

     实现Runnable接口,重写run方法。
     用Thread来new一个线程对象,并将Runnable的子类对象传入Thread的构造方法中。

		   class Demo implements Runnable{
		    
		    
		    public void run(){
		    
		    System .out.println(“hello word”);
		    
		    } 
		    
		    
		    }
		    
		    
		    class ThreadDemo{
		     public static void main(String[] args){
		    Thread t = new Thread(new demo());
		    
		    } 
		    T.start();
		    } 

     两种方法比较:java种的类只能继承一个类,第一种方法中,当Demo继承了Thread之后,就不能在继承其他类。

     Demo很可能时另一个类的子类,这时就出现了局限。第二种方法种,Demo实现了接口Runnable,同时还能称为其他类的子类,使用较多。

 线程的四个运行状态(运行、堵塞、冻结、消亡)


     1.运行:既有执行资格又有执行权。
     2.堵塞(临时状态):有执行资格没有执行权。等待CPU的执行权,一旦获得就进入运行状态。

     3.冻结:没有执行资格也没有执行权。CPU不会分配执行权给它,知道他被<唤醒。从运行状态进入冻结状态:sleep(time)或wait();被唤醒:sleep的时间到或者notify();

     4.消亡:run方法结束,或stop()。

 多线程的安全问题:

   出现线程安全的情况:
     1.存在多个线程
     2.多个线程共享数据(共享数据一般是成员变量,局部变量不是)。
     3.操作共享数据的语句至少要有两条。

     4.出现安全问题的原因:多个线程执行共享数据的代码块时,其中的一个线程还没有执行完代码块,

     另一个线程就开始执行代码块,这会造成共享数据的错误。从而出现安全问题。

 多线程安全问题的解决:同步。

  同步块

      Java中提供了同步机制,使用synchonized关键字,同步块也被称为临界资源,语法:sychronized(object)       object为任意一个对象通常是将共享资源放置在synchronized定义的区域内

  同步方法

     同步方法即使在方法修饰符后添加sychronized关键字的方法
     例:public synchronized void a(){}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值