b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java多线程死锁 moira33的博客

电脑杂谈  发布时间:2017-12-25 23:02:18  来源:网络整理

java多线程死锁_java面试多线程_java线程死锁解决

进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。

线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。一个进程中至少有一个线程。(如迅雷多线程下载)

Java VM启动的时候会有一个进程java.exe.

该进程中至少一个线程负责java程序的执行,而且这个线程运行的代码存在于main方法中,该线程称之为主线程。

扩展:其实更细节说明jvm,jvm启动不止一个线程,还有负责垃圾回收机制的线程。(主线程在执行其它对象时,无用对象在被垃圾回收)

?? 多线程存在的意义。(一个线程执行过程中产生垃圾,另一个在回收垃圾)

?? 线程的创建方式

?? 多线程的特性

通过对api的查找,java已经提供了对线程这类事物的描述,即Thread类。

定义类继承Thread

子类覆盖父类Thread中的run方法。

目的:将自定义线程运行的代码存储在run方法。

建立子类对象的同时线程也被创建。

调用线程的start方法。

该方法两个作用:启动线程,调用run方法。通过调用start方法开启线程。

Demo d = new Demo();//创建好一个线程。
d.start();//开启线程并执行该线程的run方法。
// d.run();//仅仅是对象调用方法。而线程创建了,并没有运行。

每次运行结果都不同:

因为多个线程都在获取cpu的执行权。cpu执行到谁,谁就运行。明确一点,在某一个时刻,只能有一个程序在运行。(多核除外)

cpu在做着快速的切换,以达到看上去是同时运行的效果。

我们可以形象把多线程的运行形容为互相抢夺cpu的执行权(资源)。

这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,cpu说的算。

为什么要覆盖run方法:

Thread类用于描述线程。该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。

也就是说Thread类中的run方法,用于存储线程要运行的代码。

线程都有自己默认名称:Thread-编号(该编号从0开始)

getName(): 获取线程名称。

设置线程名称:setName或者构造函数。

static Thread.currentThread():获取当前线程对象。

public class Test extends Thread {
    //private String name;
    Test(String name) {
        super(name); //this.name = name;
    }

    public void run() {
        for (int x = 0; x < 60; x++) {
            System.out.println((Thread.currentThread() == this) + "..." + this.getName() + " run..." + x); //当前运行线程即为调用对象线程
        }
    }
}
public class ThreadTest {
    public static void main(String[] args) {
        Test t1 = new Test("one---");
        Test t2 = new Test("two+++");
        t1.start();//开启线程并执行该线程的run方法。
        t2.start();
        for (int x = 0; x < 60; x++) {
            System.out.println("main....." + x);
        }
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55883-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...