java多线程
来源:互联网 发布:sql去重复查询多个字段 编辑:程序博客网 时间:2024/06/03 19:55
线程和进程:每一个java程序都是一个进程,每个进程都有自己独特的资源(即内存空间),进程之间资源不共享,所有进程都是同步操作的,进程可能需要同时进行多个操作,每一个操作可以看成一个线程,线程之间资源共享,每一个线程都是进程的组成部分,所有的线程都可以共享进程的资源。
主线程:main方法开启主线程,是不需要我们创建的线程,主线程分配的资源最多,也是用来响应用户操作的。
一般我们创建的线程都是子线程,
(子)线程的创建:
第一种方法:1.创建一个类继承Thread类型
2.复写run方法
3.在主线程处创建一个子线程的对象,来调用start方法
4.Thread.sleep(1000);进行时间间隔限制,1000表示线程每执行一次操作就暂停1秒钟。
第二种方法:1.创建一个类实现Runable方法
2.复写run方法,添加线程内容
3.启动线程
每个线程都有自己的唯一id,在线程创建的时候就被分配好的,线程运行的次序是高度不可控的线程可以使用类的属性方法
一个简单的线程调用实例:
public class MyThread extends Thread{//继承Thread方法 private static int ticket = 23; private Object obj; public MyThreads(String name,Object obj) { super(name); this.obj=obj; // TODO Auto-generated constructor stub } @Override public void run() { // TODO Auto-generated method stub super.run(); while(true){ synchronized (obj){ if(ticket<23){ return; } System.out.println(Thread.currentThread().getName()+ticket --); } }}}
public class MyThread1 implements Runable{//实现Runable接口private static int ticket = 23;@Override public void run() { while(true){ fun(); } } public synchronized void fun(){ if(ticket<0){ return; } System.out.println(ticket--); }}
调用:
public static void main(){MyThread m=new MyThread new Thread(m).start();Object obj1 = new Object();MyThreads ms1 = new MyThreads("1号:",obj1); ms1.start();}
synchronized关键字,实现同步锁机制,一般修饰方法,类,代码块,其作用的范围是大括号{}括起来的部分,作用对象是调用该部分的对象,
一个线程访问一个对象中的synchronized代码块时,其他试图访问该对象的线程将被阻塞,也就是说,当两个并发线程(thread1和thread2)访问同一个对象(syncThread)中的synchronized代码块时,在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块,两个线程互斥,只有当一个线程执行完毕,释放资源解锁之后,另一个线程才能执行并锁定该对象。
参考资料:http://blog.csdn.net/luoweifu/article/details/46613015
- 【Java多线程】多线程死锁
- Java 多线程
- java 多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA 多线程
- Java多线程
- java多线程
- JAVA 多线程
- Java 多线程
- Java 多线程
- java多线程
- Java 多线程
- Java多线程
- java 多线程
- mybatis-generator-1.3.2 代码生成器
- LightOJ-1253 Misere Nim(Nim求解不正常的博弈)
- yum命令因升级python以及更换Yum源后报错
- QT实现简单的计算器
- instanceof 与isAssignableFrom的区别
- java多线程
- Ubuntu16.04中安装ROS Kinetic
- 数据库中常用的增删改查,多表查询
- python递归函数和列表使用
- 矩阵的运算及其运算规则
- Spring系列——上传文件
- 饿了么webapp之css footer的实现
- 他们三人都答对的题目至少有多少?
- 初学python(一)