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

java多线程避免死锁 java多线程基础

电脑杂谈  发布时间:2018-02-14 04:36:27  来源:网络整理

java多线程避免死锁_多线程死锁 问题 定位_java预防死锁

????????本文主要讲java多线程的一些入门知识,包括线程的创建、调度、优先级、等待、休眠、中断及守护线程等...,在讲之前让我们先建立一个“数据字典”以简单了解多线程中出现的一些名词。

??

????????进程:进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础。可以简单的理解为运行中的应用程序。

????????多进程:允许计算机“同时”运行多个进程(应用程序)以提高CPU的利用率。

????????线程:线程是进程中的一个实体,是程序使用CPU的基本单位,也就是说线程是依赖进程而存在的。????????

????????多线程:在一个进程中同时有多个线程并发的执行。多线程可以提高应用程序的使用率。java多线程避免死锁

????????并行:指两个或两个以上事件(或线程)在同一时刻发生,是真正意义上的不同事件或线程在同一时刻,在不同CPU(多核)上同时执行。

????????并发:并发的实质是一个物理CPU(也可以多个物理CPU)在若干道程序(或线程)之间多路复用,并发是对有限物理资源强制行使多用户共享以提高效率。

????????在我们没接触多线程之前,我们所学到的都是有关顺序编程的知识。即程序中的所有事物在任意时刻都只能执行一个步骤。?? ??

??

????????不过java虚拟机(JVM)的启动却是多线程的。在我们每次运行java程序的时候就会有相应的java命令去启动JVM,JVM一启动也就相当于系统启动了一个进程,紧接着该进程就创建了一个主线程用于调用main方法,还创建了一个垃圾回收线程用于回收程序运行中可能出现的垃圾。也就是说JVM的启动至少运行着两个线程。那么我们如何实现自己的线程呢?

??

java多线程避免死锁_多线程死锁 问题 定位_java预防死锁

????????Java给我们提供了两种方式实现多线程,一种是继承Thread类,然后该子类应重写Thread类的run方法。例如,用于输出1 -- 10的线程可以写成:

package com.gk.thread.demo;

public class MyThread extends Thread{
	
	@Override
	public void run() {
		
		for (int x=1; x<=10; x++) {
			System.out.println(x);
		}
	}

}

????????然后就可以创建并启动一个线程:

MyThread mt = new MyThread();	
mt.start();

????????另一种创建线程的方式是实现Runnable接口:

package com.gk.thread.demo;


public class MyRunnable implements Runnable {

	@Override
	public void run() {

		for (int x=1; x<=10; x++) {
			System.out.println(x);
		}
		
	}

}

????????再在创建Thread时将Runnable作为参数来传递并启动:

Runnable runnable = new MyRunnable();
Thread th = new Thread(runnable);
th.start();

????????以上两种创建线程的方式都要实现run方法,那么run方法有什么作用呢?原来run方法是用来封装那些要被线程执行的代码的,因为我们的Thread类中可能不止有一个方法,run方法就是用来标记哪些代码将来要被线程执行。不过直接调用run方法也是不起多线程作用的。正如上面示例看到的那样,要启动线程,调用的是Thread类的start方法,然后JVM就会帮我们去调用该线程的run方法。


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

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

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