文档章节

2017.09.05(2)多线程

h3
 h3
发布于 2017/09/05 17:57
字数 635
阅读 6
收藏 0
点赞 0
评论 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
多线程的底层实现机制

1.多线程的底层实现 (1)首先回答什么是线程 1个进程要想执行任务,必须得有线程.线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 (2)什么是多线程 1个进程中可以开...

万能的匹诺曹
2016/06/22
38
0
转载--大神的“思想”

1、基本概念 什么是进程: 进程是在系统运行的一个程序,每个进程之间是独立的,每个进程均运行在其专有且受保护的内存空间内。 什么是线程: 一个进程想要执行任务,必须得有线程(至少一个...

细雨微风轻诉流年
2016/09/06
19
0
多线程访问共享对象和数据的方式

要实现多线程访问共享对象,一般要将有互斥的代码放在一个类当中。如果多线程中的每个线程执行的代码相同,可以功用一个Runable对象;如果不多线程代码不一致,则需要用多个Runable对象或者多...

moonlightX
05/31
0
0
[python] 连接MySQL,以及多线程、多进程连接MySQL续

之前参照他人的做法,使用DBUtils.PooledDB来建立多个可复用的MySQL连接,部分文章有误,方法不当,导致我走了很多弯路,专研几天后,终于找到了正确的使用方法。 网上有很多使用DBUtils.Poo...

tryagaintry
06/26
0
0
MoreWindows博客目录(微软最有价值专家,原创技术文章152篇)

为了方便大家查找和学习,现将本人博客中所有博客文章列出目录。 一. 白话经典算法 目前有17篇,分为七大排序和经典面试题讲解两大类 1. 《白话经典算法系列之一 冒泡排序的三种实现》 2. 《...

morewindows
2013/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
5分钟前
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
16分钟前
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
22分钟前
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
24分钟前
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
29分钟前
0
0
毕业5年,我是怎么成为年薪30W的运维工程师

#转载# 我在大学读的是计算机专业,但大学毕业之后,进入到一家私企进行工作,工作的内容类似于网管,会经常的去修电脑,去做水晶头等内容。刚开始工作,也没想太多,最想的是丰富自己的工作...

Py爱好
36分钟前
1
0
大数据基础知识,大数据学习,涉及的知识点

一、什么是大数据 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流 转、多样的数据类型和价值密度低四大特征。...

董黎明
51分钟前
0
0
Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
今天
17
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
今天
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部