线程是什么?
线程指的是两件不同的事情:
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 InterruptedExceptionpackage 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程序员初学多线程的可以看看哦 csdn积分只要一分哦
1. 实验一 基本运算练习………………………3 2. 实验二 控制语句与数组练习………………7 ...4. 实验四 java的接口和GUI编程初步…… 19 5. 实验五 异常处理和多线程编程……………49 均包括代码和运行结果
线程游戏界面,只是初步学习资料
java多线程编程笔记,本人亲自整理的,适合于初学java的同学们,相信通过努力学习我们一定会对java有个初步的了解
语法、数组、面向对象、抽象类、接口、枚举、常用类、集合、泛型、注解、异常处理、多线程、IO 流、网络编程、反射。 学习目标:打下扎实的语言基础,深刻理解面向对象的抽象概念,具备初步编码能力,培养对于编程的...
Java游戏编程初步/Java游戏编程初步/Java游戏编程初步 Java游戏编程初步 Java游戏编程初步 但是如何让我们的圆运动呢?这里我们利用函数Graphics 类的fillOval函数来设置了圆的起始位置x,y。现在我们只要在线程...
C#线程学习如同在Java中一样,在c#中写一个多线程应用是非常简单的,本章将介绍如何在c#种开发多线程程序。在.net中线程是由System.Threading 名字空间所定义的。所以你必须包含这个名字空间。
初步认识面向对象编程,Java视一切为对象。 使用输入和输出语句编写简单的Java应用程序。 区分applet与application(浏览器和虚拟机上运行)。 编写简单的applet,并嵌入HTML文档,掌握其...
本次课程通过弹球游戏来学习Java中的多线程及图形界面知识,让初学JAVA编程的朋友,对多线程及图形界面有一个初步的了解。本次课程是JAVA基础系列课程中的一节。通过简单有趣的内容来完成JAVA的学习,是本课程追求的...
NULL 博文链接:https://comsci.iteye.com/blog/2255684
本次课程通过一个游戏动画,将Java中的网络编程及多线程的知识结合起来,让初学JAVA编程的朋友,对网络编程及多线程有一个初步的了解。通过简单有趣的内容来完成JAVA的学习,是本课程追求的目标。
实验报告 实践报告 课程名称: Java语言程序设计 实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、J ava异常处理 多线程编程、图形用户界面编程 实验、实践地点: 致向楼301 专业班级: ...
多线程 , java,多线程并发,对于多线程的原理以及使用做了初步的介绍
java8 源码 目录 Java 基础 容器 并发 JVM I/O Java ...Java 代码必备实践(Java编程规范) ...Java学习常见问题汇总 ...本文档倾向于给你提供一个比较详细的学习路径,让你对于Java整体的知识体系有一个初步认识
主要介绍了初步学习Java中线程的实现与生命周期,线程方面的知识是Java学习过程中的重点和难点,需要的朋友可以参考下
多线程的了解,初步实现
《Java程序设计》共分12章,内容包括Java语言概述、面向对象编程初步、Java的基本语法、类库与数组、面向对象编程深入、图形用户界面编程、异常处理和输入输出,以及多线程编程等内容。 本书讲解Java程序设计知识...