Java 初学者-多线程总结

今天对多线程进行了总结。

1.什么是进程与线程?

进程是一个应用程序,一个进程是一个软件

线程是一个进程的执行单元

一个进程可以执行多个线程

2.JVM是一个进程

当在doc命令窗口界面下输入java helloworld

会先启动JVM,JVM再启动一个主线程调用main方法

同时启动一个垃圾回收线程看护,回收垃圾

3.进程就是公司,线程就是员工

两个进程之间内存独立,不共享。(两个公司)

例如:QQ

         微信

 

两个线程之间

线程A与线程B的堆内存和方法区内存共享

栈内存独立

假如启动多个线程,会有多个栈空间。

每个栈之间互不干扰,这就是多线程并发

因此会提高效率

(一个火车站(进程),多个售票窗口同时售票(多线程)

3.使用多线程之后,main方法结束,程序不一定结束,只是主栈空了。

其它线程可能仍运行。

 

4.单核CPU可以做到真正的多线程并发吗?

多核CPU可以做到真正的多线程并发。

真正的多线程并发?

T1线程运行不影响T2线程。

T1执行t1的,t2执行t2的。

 

单核cpu只有一个大脑?

不能真正的多线程并发,线程A播音乐,线程B玩游戏。 

A,B线程可以频繁切换。因此类似于多线程。

 

 

5.java语言中实现多线程的两种方式。

Java支持多线程机制

第一种方式:直接继承thread,重写run()方法

 定义线程类:public Mythread extends Thread{

 public void run(){}

 

}

创建线程对象

MyThreaf t=new MyThread();

启动run方法

t.start();

 方法二:编写一个类实现java.lang.Runnable()接口,实现run方法

//定义一个可运行的类

class MyRunnable implements Runnable{

Public void run(){}

}

 MyRunnable r=new MyRunnable();//创建一个可以运行的对象

      Thread t=new Thread(r);

      t.start();//启动线程

 

注意:第二种方式使用比较较多,不仅可以继承接口,还可以继承类

6.线程的生命周期:

    新建状态,就绪状态,运行状态,阻塞状态,死亡状态。

 

 

7Thread.sleep()让当前线程进入休眠

 

8.线程调度模型

  1.抢占式:那个线程的优先级较高,那个线程抢占cpu时间片的概率就高(java

   2.均分式:平均分配cpu的时间片,每个线程的执行时间一样。

 

9.关于多线程并发时,数据的安全问题?

 以后,我们的项目都是运行在服务器中,而服务器将线程的定义,线程的创建,线程的启动都已经完成,我们不需要编写。

最重要的是,你需要关注在多线程运行环境下,那些数据是要安全的。

  9.1什么时候会存在安全问题?

     1.多线程并发。

      2.共享数据。

      3.共享数据有修改行为。

 

9.2.如何解决线程安全问题>
线程排队执行.(不能并发)

这种机制叫做:线程同步机制。数据安全再谈效率。

9.3同步与异步编程模型?

 异步编程模型:线程t1,t2各自执行各自的谁也不需要等谁。(并发)

同步编程模型:线程t1执行的时候必须等待t2线程执行结束。T2必须等待t1.(排队)

9.4

runmain方法各自执行各的,互不干扰

第二种方式实现多线程

编写一个类实现java.lang.Runnable()接口,实现run方法

//定义一个可运行的类

class MyRunnable implements Runnable{

Public void run(){}

}

 MyRunnable r=new MyRunnable();//创建一个可以运行的对象

      Thread t=new Thread(r);

      t.start();//启动线程

 

 明天计划学习一下html。

 

posted @ 2020-08-28 21:12  好吗,好  阅读(139)  评论(0)    收藏  举报