一、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线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 ...
java多线程的使用方法如何使用,怎么使用,使用过程中有什么要注意的
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...
《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...
Java线程 高级使用线程 Java线程
java线程深入讲解,可以了解java线程同步语安全,实现的方法和synchronized锁的使用与安全控制等等,谁用谁知道好用
Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有
java多线程处理大数据,可根据配置的线程数,任务去调度处理
java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。
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中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
用反射实现了对java线程简单的封装,类似c#线程,使用此封装类勿需再次继承Thread类或实现Runnable接口,直接绑定需要使用线程的方法即可,另支持动态传参,如觉着好用请多多支持作者 QQ 359103820 希望能为使用线程...
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多线程PPT,这个PPT介绍了JAVA中线程的使用方法,比较浅显易懂!
Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。 2.实现Runnable接口,并实现该接口的run()方法.创建一个Thread对象,用实现的Runnable接口...
适合初学者使用,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 同步方法和同步代码块的嵌套调用...