`

java线程---初步

阅读更多
线程是什么?
线程指的是两件不同的事情:
1,java.lang.Thread的一个实例
2,线程的执行一个Thread实例只是一个对象。像Java中的任何其他对象一样,具有变量和方法,生死在堆上。但是线程的执行时一个单独的进程,有自己的调用栈。每个线程都有自身的调用栈。

不同的JVM可能以不同的方式来运行线程,例如可能在一个jvm上,各个线程分时运行,而有的JVM必须要保证一个线程执行完毕,才能进行切换。

初始化线程实例:
Thread t = new Thread();
或Runnable r = new MyRunnable();
Thread t = new Thread(r);

注意Thread本身实现了Runable接口,所以可以将thread作为Thread t = new Thread();的参数。注意线程执行的次序是没有保障的,并不一定先调用start的thread,就一定先run。当线程执行完其run方法后,不再是一个执行过程,该线程的栈解散。

如果线程已经启动,就不能再次调用start方法启动,会导致异常IllegalThreadStateException。
我们可以使用一些方法来影响线程的调度顺序,记住,是影响,不是控制,只有JVM才能真正控制线程调度。
来自Thread类的方法:
public static void sleep(long sleeptime) throws InterruptedException
        public static void yield()
        public final void join()throws InterruptedException
        public final void setPriority(int newPriority)
位于Object类中的方法有:
public final void notify()
public final void notifyAll()
public final void wait()throws InterruptedException
package threadExamples;

class Printer implements Runnable {

	private String message;

	public Printer(String s) {
		this.message = s;
	}

	@Override
	public void run() {

		for (int i = 0; i < 1000; i++) {
			System.out.println(message);
		}
	}

}

class MyThread extends Thread {
	public void run() {
		for (int i = 0; i < 500; i++) {
			System.out.println("Nice");
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			} // 新线程要等待,必须在run方法中sleep
		}
		System.out.println("End of mythread");
	}
}

public class Main {

	public static void main(String[] args) throws InterruptedException {//主线程
		 MyThread t = new MyThread();
		 t.start(); //启动线程,会和主线程交替执行
		
		for (int i = 0; i < 1000; i++) {
			System.out.println("Good");
		}
		
		
		
		Printer p = new Printer("*");
		Printer p1 = new Printer("+");

		p.run();
		p1.run(); // 注意: 单线程,只是由main调用run方法,并没有启动线程
		// 输出时先是*,后是+,不会出现二者交替输出的情况

		System.out.println("End of main");
	}

}
分享到:
评论

相关推荐

    Java编程-线程实例

    初步学习Java编程的同学可借鉴,学的比较好的就不用看了

    java线程理解小程序

    一个安卓聊天和客户端的小程序 初步理解客户端与服务器的连接 还有线程的使用

    java线程基础

    java线程基础,线程初步接触者所需要了解的

    java多线程开发初步入门

    java程序员初学多线程的可以看看哦 csdn积分只要一分哦

    java实验大全 多态 嵌套 接口 同步 异常处理 多线程

    1. 实验一 基本运算练习………………………3 2. 实验二 控制语句与数组练习………………7 ...4. 实验四 java的接口和GUI编程初步…… 19 5. 实验五 异常处理和多线程编程……………49 均包括代码和运行结果

    java游戏线程界面

    线程游戏界面,只是初步学习资料

    java多线程编程笔记

    java多线程编程笔记,本人亲自整理的,适合于初学java的同学们,相信通过努力学习我们一定会对java有个初步的了解

    Java-预备知识-Java基础

    语法、数组、面向对象、抽象类、接口、枚举、常用类、集合、泛型、注解、异常处理、多线程、IO 流、网络编程、反射。 学习目标:打下扎实的语言基础,深刻理解面向对象的抽象概念,具备初步编码能力,培养对于编程的...

    Java游戏编程初步

    Java游戏编程初步/Java游戏编程初步/Java游戏编程初步 Java游戏编程初步 Java游戏编程初步  但是如何让我们的圆运动呢?这里我们利用函数Graphics 类的fillOval函数来设置了圆的起始位置x,y。现在我们只要在线程...

    用C#实现的unity线程初步

    C#线程学习如同在Java中一样,在c#中写一个多线程应用是非常简单的,本章将介绍如何在c#种开发多线程程序。在.net中线程是由System.Threading 名字空间所定义的。所以你必须包含这个名字空间。

    AIC的Java课程1-6章

     初步认识面向对象编程,Java视一切为对象。  使用输入和输出语句编写简单的Java应用程序。  区分applet与application(浏览器和虚拟机上运行)。  编写简单的applet,并嵌入HTML文档,掌握其...

    Java入门-系列游戏开发-弹球

    本次课程通过弹球游戏来学习Java中的多线程及图形界面知识,让初学JAVA编程的朋友,对多线程及图形界面有一个初步的了解。本次课程是JAVA基础系列课程中的一节。通过简单有趣的内容来完成JAVA的学习,是本课程追求的...

    [JWFD开源工作流]JAVA单线程时钟算法和代码(初步设计)

    NULL 博文链接:https://comsci.iteye.com/blog/2255684

    Java入门-系列游戏开发-龟兔争霸

    本次课程通过一个游戏动画,将Java中的网络编程及多线程的知识结合起来,让初学JAVA编程的朋友,对网络编程及多线程有一个初步的了解。通过简单有趣的内容来完成JAVA的学习,是本课程追求的目标。

    java实验报告-(2).doc

    实验报告 实践报告 课程名称: Java语言程序设计 实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、J ava异常处理 多线程编程、图形用户界面编程 实验、实践地点: 致向楼301 专业班级: ...

    自己总结的多线程

    多线程 , java,多线程并发,对于多线程的原理以及使用做了初步的介绍

    java8源码-javaGuide:java面试整理

    java8 源码 目录 Java 基础 容器 并发 JVM I/O Java ...Java 代码必备实践(Java编程规范) ...Java学习常见问题汇总 ...本文档倾向于给你提供一个比较详细的学习路径,让你对于Java整体的知识体系有一个初步认识

    初步学习Java中线程的实现与生命周期

    主要介绍了初步学习Java中线程的实现与生命周期,线程方面的知识是Java学习过程中的重点和难点,需要的朋友可以参考下

    多线程的了解,初步实现

    多线程的了解,初步实现

    Java程序设计PPT详解

    《Java程序设计》共分12章,内容包括Java语言概述、面向对象编程初步、Java的基本语法、类库与数组、面向对象编程深入、图形用户界面编程、异常处理和输入输出,以及多线程编程等内容。 本书讲解Java程序设计知识...

Global site tag (gtag.js) - Google Analytics