15.java线程(没谱的特点)
来源:互联网 发布:恢复电脑数据的软件 编辑:程序博客网 时间:2024/06/05 02:56
1.进程和线程
多进程:操作系统同时运行多个任务;
多线程:就是进程执行中的一个流程;
2.多线程程序运行模式
单线程和多线程
3.定义线程方法
线程也是个对象。
创建线程方法:
1、定义一个线程类,继承Thread并重写其中的方法run(),run里面的代码称为线程体。
(java只支持单继承,用这种方法定义的类不能继承其他类java)
启动线程:对象.start(),调用了的run方法。
classMyThreadextendsThread{ publicvoid run(){ //处理具体逻辑 }}newMyThread().start();
2、第二种方法
1)建立Runnable类的对象(线程的任务);
2)生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给该Thread对象;
ri是Runnable接口实现类的对象,执行工人。
Thread t = new Thread(ri),
3)通知Thread对象执行start()方法;
classMyThreadimplementsRunnable{ publicvoid run(){ //处理具体的逻辑 }}MyThread myThread =newMyThread();newThread(myThread).start();
两种方案的区别:由于java单继承,第二种方法好处是线程的线程体和执行线程给拆分开了。
建议用第二种。
匿名内部类实现:
newThread(newRunnale(){ publicvoid run(){ //处理具体的逻辑 }}).start();
4.线程简单的控制方法
1)中断线程
-Thread.sleep() //休眠
-Thread.yield() //让出CPU,重新抢
2) 设置线程的优先级(最大10,最小1,可用静态常量来设置 MAX_PRIORITY)
-getPriority() //获取优先级
-setPriority() //设置优先级
优先级高执行的概率越大,并不是第一个执行。
4.多线程的数据安全(访问完整性)
多线程同用同一份数据的时候会产生该错误。并发性问题,引起竞争状态。
情况: 生成的两个Thread对象,但是这两个Thread对象共用同一个线程体;
每个线程都有名字,可以通过Thread对象的setName()方法设置线程名字。也可以使用getName方法获取线程的名字,分别启动两个线程。
同步线程解决方法:同步代码块(同步锁)
synchronized(this){}
5.synchronized
1)同步代码块作用:
一旦一个线程获得了一个对象的同步锁,那么这个对象上所有其他的同步的代码都是不能被其他
线程执行的,都需要等待同步锁被释放后执行。
synchronized(对象)
2)同步方法:
public synchronized void fun1()
锁住的对象也是this(调用这个函数的对象)
3)同步方法和同步代码块区别:
同步代码块指定具体哪个对象。同步方法锁住的就是调用这个函数的对象
0 0
- 15.java线程(没谱的特点)
- java常用线程池的特点
- Linux线程的一些特点
- JAVA的特点
- java的一些特点
- Java语言的特点
- Java语言的特点
- JAVA的特点
- JAVA语言的特点
- java源文件的特点
- java语言的特点
- Java语言的特点
- Java 的特点
- Java IO的特点
- java static的特点
- java鲁棒性的特点
- Java语言的特点
- Java的特点
- 14.内部类和匿名类
- appStore上传苹果应用程序软件发布流程
- 13.序列化和IO流(存储恢复)
- 12.异常
- 16.数组、类集框架
- 15.java线程(没谱的特点)
- 17.Java重构(Eclipse)
- lua正则表达式
- 19.网络
- 18.GUI
- Java中的Timer和TimerTask来实现多线程
- android编译时出现'Unable to resolve target 'android-5'
- 自定义Button,复写里面的onKeyDown,不起作用
- Eclipse android 布局页面Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V