java单线程和多线程的区别

简介:

1.单线程和多线程的区别?

你早上上班,正要打卡的时候,手机响了。。你如果先接了电话,等接完了,在打卡,就是单线程。
如果你一手接电话,一手打卡。就是多线程。
这两件事的结果是一样的。。你接了电话且打了卡。

(1)最常见的一个线程例子:

package com.ggx.thread;
public class OnlyThread{
	public static void main(String[] args){
		System.out.println("我就是一个线程");
	}
}

当程序启动运行时,就自动产生一个线程,主方法main就在这个主线程上运行。我们的程序都是由线程来执行的。

(2)控制该线程的行为

package com.ggx.thread;

public class OnlyThread {

	@SuppressWarnings("static-access")
	public static void main(String[] args) {
		Thread thread = Thread.currentThread();// 获取当前线程的引用(这里并没有创建新的线程)
		thread.setName("我是孤零零的一个线程");// 设置当前线程名称
		System.out.println(thread.getName() + ":正在运行");
		for (int i = 0; i <= 5; i++) //当前线程循环睡眠
		{
			try 
			{
				System.out.println(thread.getName()+"第:" + i+"次睡眠,当前时间"+System.currentTimeMillis());
				thread.sleep(5000);//让当前线程睡眠五秒钟
				System.err.println(thread.getName()+"第:" + i+"次觉醒,当前时间"+System.currentTimeMillis());
				thread.sleep(1000);//这里是为了方便区分控制台的输出,因为两次间隔毫秒数相同,打印的顺序会有错乱让线程睡了一秒,这样输出顺序容易观察
				System.out.println();//换行
			} catch (InterruptedException e) 
			{
				System.out.println(thread.getName()+"异常");
				e.printStackTrace();
			}
		}
	}
}
</span>

程序运行结果:
我是孤零零的一个线程:正在运行
我是孤零零的一个线程第:0次睡眠,当前时间1439734065648
我是孤零零的一个线程第:0次觉醒,当前时间1439734070663


我是孤零零的一个线程第:1次睡眠,当前时间1439734071666
我是孤零零的一个线程第:1次觉醒,当前时间1439734076668


我是孤零零的一个线程第:2次睡眠,当前时间1439734077670
我是孤零零的一个线程第:2次觉醒,当前时间1439734082673


我是孤零零的一个线程第:3次睡眠,当前时间1439734083675
我是孤零零的一个线程第:3次觉醒,当前时间1439734088687


我是孤零零的一个线程第:4次睡眠,当前时间1439734089690
我是孤零零的一个线程第:4次觉醒,当前时间1439734094694


我是孤零零的一个线程第:5次睡眠,当前时间1439734095696
我是孤零零的一个线程第:5次觉醒,当前时间1439734100711

当程序启动运行时,就自动产生一个线程,主方法main就在这个主线程上运行。我们的程序都是由线程来执行的。

线程在建立后并不马上执行run方法中的代码,而是处于等待状态。线程处于等待状态时,可以通过Thread类的方法来设置线程各种属性,如线程的优先级(setPriority)、线程名(setName)和线程的类型(setDaemon)等。

注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常。




相关文章
|
16天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
28天前
|
存储 缓存 NoSQL
Redis单线程已经很快了6.0引入多线程
Redis单线程已经很快了6.0引入多线程
31 3
|
30天前
|
消息中间件 安全 Linux
线程同步与IPC:单进程多线程环境下的选择与权衡
线程同步与IPC:单进程多线程环境下的选择与权衡
58 0
|
1月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
1月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
1月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
1月前
|
Java
Java isBlank和isEmpty的区别
JavaisBlank和isEmpty的区别
17 0
|
1月前
|
存储 安全 Java
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程:
110 1
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
|
1月前
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
|
1天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
6 3

热门文章

最新文章