多线程

先了解线程的概念

多线程需要注意的地方

优先级、线程同步、消息传递、数据共享、死锁等

Java线程类 Thread,实现接口 Runnable

Thread常用方法

getName 获得线程名称
getPriority 获得线程优先级
jsAlive 判定线程是否仍在运行
join 等待一个线程终止
run 线程的入口点.
sleep 在一段时间内挂起线程
start 通过调用运行方法来启动线程

一个线程的例子,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程,它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作。

   public static void main(String[] args) {
Thread t = Thread.currentThread();
System.out.println("Current thread: " + t);
t.setName("My Thread");
System.out.println("After name change: " + t); try {
for (int n = ; n > ; n--) {
System.out.println(n);
Thread.sleep();
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted");
}
}

创建线程

实例化一个Thread对象来创建一个线程。Java定义了两种方式:

  • 实现Runnable 接口;
  • 可以继承Thread类。

创建线程的最简单的方法就是创建一个实现Runnable 接口的类,实现run()方法

class NewThread implements Runnable {
Thread t; NewThread() {
t = new Thread(this, "Demo New Thread");
t.start();
} public void run() {for (int i = ; i > ; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep();
}
}
}

创建线程的另一个途径是创建一个新类来扩展Thread类,然后创建该类的实例。

class NewThread extends Thread {
NewThread() {
super("Demo Thread");
start();
}
public void run() {
for(int i = ; i > ; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep();
}
}
}

创建多线程

public static void main(String[] args) {
new NewThread();
new NewThread();
new NewThread();
System.out.println("Main thread exiting.");
}

使用多线程要理解 join()方法,主线程会等待子线程结束在继续执行

つづけ

Java基础知识学习(六)的更多相关文章

  1. Java基础知识学习(九)

    GUI开发 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT的改良版,而不是代替AWT,是对A ...

  2. java基础知识学习笔记

    本文知识点以js为参照.对比分析得出笔记.JavaScript之所以叫JavaScript是打算借助java推广自己.虽然都是开发语言,但JavaScript一开始主要运行在 客户端,而java主要运 ...

  3. Java基础知识学习(三)

    面向对象部分 首先要了解面向对象的思想,与C#一致,都是面向对象的语言 访问修饰符 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private ...

  4. Java基础知识学习(一)

    部门接了新项目,后台使用Java框架play framework,前端是html,前后台通过rest交互,能够支持多端的互联网架构. 因为之前没有Java基础,前端使用的也很少,决定深入学习一下Jav ...

  5. Java基础知识学习(二)

    Java语法基础 数据类型.类型转换.运算符.逻辑运算符.参考C#,基本一致 输入输出 输出 System.out.print("abc"); System.out.printf( ...

  6. java基础知识学习 内存相关

    Java 内存分配策略 静态存储区(方法区):主要存放静态数据.全局 static 数据和常量.这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在. 栈区 :当方法被执行时,方法体内的局部 ...

  7. java基础知识(六)日期处理

    一.日期处理类 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 ...

  8. Java基础知识学习(八)

    IO操作 5个重要的类分别是:InputStream.OutStream.Reader.Writer和File类 面向字符的输入输出流 输入流都是Reader的子类, CharArrayReader ...

  9. Java基础知识学习(七)

    线程(续) 线程同步 当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用.达到此目的的过程叫做同步(synchronization) 可以用两种方法同步化代码.两者 ...

随机推荐

  1. ASP.NET Core 开发-缓存(Caching)

    ASP.NET Core 缓存Caching,.NET Core 中为我们提供了Caching 的组件. 目前Caching 组件提供了三种存储方式. Memory Redis SqlServer 学 ...

  2. 利用JavaScript函数对字符串进行加密

    加密.解密问题对我来说一直是很神秘的,感到神奇无比. 理论了解 前段时间看到关于利用JavaScript函数unescape()和escape()对字符串进行替换处理.通过查资料得知, escape( ...

  3. Nancy Scripts,CSS文件夹配置

    public class Bootstrapper : DefaultNancyBootstrapper { protected override void ConfigureConventions( ...

  4. 算法实例-C#-快速排序-QuickSort

    算法实例 ##排序算法Sort## ### 快速排序QuickSort ### bing搜索结果 http://www.bing.com/knows/search?q=%E5%BF%AB%E9%80% ...

  5. java.lang.NoClassDefFoundError: com/google/gson/Gson错误的解决

    SSH返回JSON格式的数据时,需要用到gson,将gson-1.6.jar添加进Build path以后运行,出错: 后来把gson-1.6.jar复制到WEB-INF/lib/下再运行,就没再出这 ...

  6. 详解 Spring 3.0 基于 Annotation 的依赖注入实现(转)

    使用 @Repository.@Service.@Controller 和 @Component 将类标识为 Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的 ...

  7. WebDriver多线程并发

    要想多线程并发的运行WebDriver,必须同时满足2个条件,首先你的测试程序是多线程,其次需要用到Selenium Server.下载位置如下图: 下载下来后是一个jar包,需要在命令行中运行.里面 ...

  8. cnodejs社区论坛6--评论功能

  9. jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)

    最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...

  10. SQL Server 行转列重温

    转载自http://www.cnblogs.com/kerrycode/ 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER ...