文档章节

2017.09.05(2)多线程

h3
 h3
发布于 2017/09/05 17:57
字数 635
阅读 6
收藏 0

在java 中要想实现多线程代码有两种手段,一种是继承 Thread 类,

另一种是实现 Runnable 接口。

Thread 类是在 java.lang 包中定义的,一个类只继承了 Thread 类,此类就称为多线程操作类。

在Thread 子类中,必须明确地覆写 Thread 类中的 run() 方法,此方法为线程的主体。

正确地启动线程,必须调用从 Thread 类中继承而来的 start() 方法。

一个类通过继承 Thread 类来实现,那么只能调用一次 start() 方法,如果多次调用将会抛出。。导演

实现 Runnable 接口

在 Java 中也可能通过实现 Runnable 接口的方式实现多线程,Runnable接口中只定义了一个抽象方法

public void run();

在 Thread 类中,提供了 public Thread(Runnable target)  和 public Thread(Runnable target,String name) 两个构造方法,来接收 Runnable 的子类实例对象

所以: new Thread(Runnable 的子类对象).start();

要想实现多线程,必须在主线程中创建新的线程对象。任何线程一般具有5种状态,即:创建、就绪、运行、阻塞、终止。

在 Thread 类中可以通过 getName() 方法取得线程的名称,还可以通过 setName() 方法设置线程的名称

在线程操作中,可以使用 join() 方法让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才可以继续执行。

直接使用 Thread.sleep() 方法即可实现休眠。

当一个线程运行时,另外一个线程可以直接通过 interrupt() 方法中断其运行状态。

在 Java 程序中,只要前台有一个线程在运行,则整个 Java 进程都不会消失,所以此时可以设置一个后台线程,这样即使 Java 进程结束了,此后台线程依然会继续执行。要想实现宋的操作,直接使用 setDaemon() 方法即可。

class MyThread implements Runnable{
	public void run(){
		while(true){
			System.out.println(Thread.currentThread().getName() + "在运行");
		}
	}
}
public class Task33{
	public static void main(String args[]){
		MyThread my = new MyThread();
		Thread t1 = new Thread(my,"线程");
		t1.setDaemon(true);
		t1.start();
		System.out.println("主方法结束了吧");
	}
}

在线程的操作中,也可以使用 yield() 方法将一个线程的操作暂时让给其他线程执行。

同步代码块与同步方法

同步代码块格式:synchronized(同步对象){ 需要同步的代码;}

同步方法格式:synchronized 方法返回值 方法名称(参数列表){ 方法主体 }

 

 

 

© 著作权归作者所有

共有 人打赏支持
h3

h3

粉丝 6
博文 47
码字总数 16408
作品 0
福州
程序员
私信 提问
Posix多线程编程学习笔记

Posix多线程编程学习笔记(一)—线程基础(1) http://blog.chinaunix.net/u/22935/showart310711.html Posix多线程编程学习笔记(一)—线程基础(2) http://blog.chinaunix.net/u/22935/...

晨曦之光
2012/04/13
163
0
秒杀多线程第一篇 多线程笔试面试题汇总

系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同...

长平狐
2012/12/10
136
0
秒杀多线程第一篇 多线程笔试面试题汇总

系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同...

晨曦之光
2012/05/21
159
0
秒杀多线程第一篇 多线程笔试面试题汇总

系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同...

彭博
2012/04/12
441
0
Android多线程:继承Thread类 & 实现Runnable接口 使用解析(含实例教程)

前言 在开发中,多线程的使用十分常见 今天,我将全面解析多线程中最常见的2种用法:继承类 & 实现接口 Part 1:继承Thread类 目录 1. 简介 class MyThread extends Thread{ // 步骤2:复写r...

carson_ho
05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

降压变换器 Buck

特点 输入输出极性相同。 工作过程 在 MOS 导通时,输入电源通过 L 和 C 滤波后向负载端提供电流;当 MOS 断开后,L 通过二极管续流,保持负载电流连续。输出电压因为占空比的作用,不会超过...

colinux
今天
1
0
Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
今天
3
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
今天
4
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
4
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部