基础线程知识



1:执行mian函数的线程

        该线程是执行main中的函数

2:负责垃圾回收的线程

 

Object 中 finalize()

        垃圾回收器调用此方法;

 

System(系统类)

        运行gc()方法(运行gc回收器)

 

System.gc();

 

 

jvm结束,它会强制清楚它所占的内存。

 

主线程结束,如果其它线程没有结束。(所以有可能jvm不会立即结束)

 

垃圾回收的判断方法:

    0.不会立即进行垃圾回收;

    1.判断堆内存的占用率;

    2.gc()调用不会立即执行

 

 

 

进程是由操作系统创建的,进而创建线程;

 

 

Thread 

        start()开启线程,调用方法;

 

权限问题:

    

 

synchronized 修饰的代码块,可以使代码块中的代码不会同时被多个线程执行;

 

 

静态的同步函数使用的锁是 该函数所属字节码文件对象

可以用getClass方法获取,也可以用当前 类名.class对象

 

 

死锁:同步的嵌套

附代码:

public class DeathLockDemo implements Runnable{

 private int num = 100;
 Object object = new Object();
 boolean flag = true;
 
 @Override
 public void run() {
  if(flag){
   while(true){
    synchronized(DeathLockDemo.class){
     show();
    }
   }
  }else{
   while(true)
   this.show();
  }
  
 }
 
 public synchronized void show(){
   synchronized (DeathLockDemo.class){
    if(num>0){
     try {
      Thread.sleep(10);
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
     System.out.println(Thread.currentThread().getName()+"....sale...."+num--);
    }
   }
 }
 
}

class demo{
 public static void main(String[] args){
  DeathLockDemo demo = new DeathLockDemo();
  
  Thread t1 = new Thread(demo);
  Thread t2 = new Thread(demo);
  
  t1.start();
  try {
   Thread.sleep(10);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  demo.flag = false;
  t2.start();
 }
}

 

最后,希望本文对你有帮助,领个红包吧!



你可能感兴趣的:(java线程,java,线程)