`

java线程基本用法(一)

 
阅读更多
一、java中实现一个线程

1.继承Thread类(这样其他类继承不了了,只能实现接口)
2.实现Runnable接口

二、实现线程了要共享一些数据

    问题一:先实例化这个类,然后用这个类实现多个线程,达到数据的共享。
     锁机制:问题是有时候一个线程执行一般的时候,另一个线程也去执行导致数据不一致。

package com.stx.thread;

public class Thread_1 implements Runnable {

	private int t=20;
	@Override
	public void run() {
		for(int i=0;i<5;i++){
			//t--;
			System.out.println(Thread.currentThread().getName()+"---"+t--);
		}
		
	}
 public static void main(String[] args) {
	Thread_1 t=new Thread_1();
	Thread th=new Thread(t,"001");
	Thread th1=new Thread(t,"002");
	Thread th2=new Thread(t,"003");
	th.start();
	th1.start();
	th2.start();
}
}

结果
001---20
001---17
001---16
001---15
001---14
003---18
003---13
003---12
003---11
003---10
002---19
002---9
002---8
002---7
002---6

  问题二:基本的死锁  两个大房间每个房间还有个小房间 大(小)房间钥匙一样总只有两 把 刚好每人一把结果都卡那了,去得早的有可能那两把
public class TestDeadLock implements Runnable {

                     public int  flag=1;
					 
					static Object o1=new Object(),o2=new Object();
					 
					 public void run(){
					 
					 System.out.println(Thread.currentThread().getName());
					 
					        if(flag==1){
							    synchronized(o1){
								                 try{
												       Thread.sleep(500);
												 }catch(InterruptedException e){
												  e.printStackTrace();
												 }
							    synchronized(o2){
								        System.out.println(1);
								}
								}            
							}
							
							if(flag==0){
							    synchronized(o2){
								                 try{
												       Thread.sleep(500);
												 }catch(InterruptedException e){
												    e.printStackTrace();
												 }
							    synchronized(o1){
								          System.out.println(0);
								}					 
								}
							}
					 }
					 public static void main(String[] args){
					 TestDeadLock t1=new TestDeadLock();
					 TestDeadLock t2=new TestDeadLock();
					 
					 t1.flag=1;
					 t2.flag=0;
					 
					 new Thread(t1).start();
					 new Thread(t2).start();
					 
					} 
					 
}

结果     电脑傻傻的等着啥也不干了
Thread-0
Thread-1

问题三:就是想写个统计运行时间的程序可是每次主线程先执行完,什么也搞不了,怎样让主程序执行一般等待其他线程结束了他在运行下面的内容那?
//找了个方法线程的join方法
//因为是在主线程内运行的新增线程的join方法 那就会在这个线程结束的时候才去执行主线程
//但是另一问题是肯定是 主线程里面运行了 多个线程都设置join吗?
//这个是在第一个线程启动后然后join的运行结果也确实如此
001---20
001---19
001---18
001---17
001---16
---ok---
003---15
003---14
003---13

ThreadLocal的详解http://lavasoft.blog.51cto.com/62575/51926/
分享到:
评论

相关推荐

    java多线程编程总结

    Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 ...

    java的多线程使用方法

    java多线程的使用方法如何使用,怎么使用,使用过程中有什么要注意的

    java多线程笔记

    Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...

    java 多线程设计模式 进程详解

    《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...

    Java线程 高级使用

    Java线程 高级使用线程 Java线程

    java线程深入解析

    java线程深入讲解,可以了解java线程同步语安全,实现的方法和synchronized锁的使用与安全控制等等,谁用谁知道好用

    Java线程中wait,await,sleep,yield,join用法总结.pdf

    Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有

    java多线程处理大数据

    java多线程处理大数据,可根据配置的线程数,任务去调度处理

    java线程分析java project例子

    java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制 9.1 Java中的线程 9.2 Thread的子类创建线程 9.3 使用Runable接口 9.4 线程的常用方法 9.5 GUI线程 9.6 线程同步 9.7 在同步方法中使用wait()、notify 和notifyAll()方法 9.8 挂起、恢复和终止线程 ...

    java多线程实现动画功能

    java一些简单的多线程用法,适合初学者

    在Java中创建线程有两种方法

    在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。

    java线程简单的封装类

    用反射实现了对java线程简单的封装,类似c#线程,使用此封装类勿需再次继承Thread类或实现Runnable接口,直接绑定需要使用线程的方法即可,另支持动态传参,如觉着好用请多多支持作者 QQ 359103820 希望能为使用线程...

    java多线程每个线程挨着打印ABC的4种实现方式

    java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...

    JAVA课件(线程)

    JAVA多线程PPT,这个PPT介绍了JAVA中线程的使用方法,比较浅显易懂!

    java多线程示例

    Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。 2.实现Runnable接口,并实现该接口的run()方法.创建一个Thread对象,用实现的Runnable接口...

    Java多线程技术实现矩阵乘积计算

    适合初学者使用,Java多线程技术实现矩阵乘积计算

    图解java多线程

    本文主要讲java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的线程函数用法、概述等。首先让我们来了解下在操作系统中进程和线程的区别:

    Java多线程详解及示例

    本文将深入探讨Java多线程编程的重要性和使用方法。介绍多线程概念,讨论多线程的优势,并提供实际示例。此外,还将探讨多线程编程中的常见问题以及如何避免这些问题。通过本文,您将获得对Java多线程编程的全面理解...

    java应用程序中使用线程

    3.1 Java线程 3.2 创建线程 3.3 使用线程的缺点 3.3.1 初始启动变慢 3.3.2 资源利用 3.3.2 资源利用 3.4 线程管理 3.5 共享资源的使用同步 3.5.1 同步方法和同步代码块的嵌套调用...

Global site tag (gtag.js) - Google Analytics