
多线程100个问题
2017不平凡的一年
这个作者很懒,什么都没留下…
展开
-
线程中断
java中所有的中断,并不能真正结束和中断线程,下图中的running状态和同步锁状态的线程,中断只是改变了它们的中断标识,并没有中断线程。官方文档解释:1. 如果该线程阻塞的调用wait(),wait(long)或wait(long, int)该方法的Object 类,或的join(),join(long),join(long, int),sleep(long),或者sleep(long, int原创 2017-08-11 17:39:21 · 353 阅读 · 0 评论 -
java线程和线程组的初始化
初始化线程的核心java方法init(ThreadGroup g, Runnable target, String name,long stackSize, AccessControlContext acc,boolean inheritThreadLocals)g线程组,target执行体,name线程名称,stackSize线程栈的大小初始化线程时,可以指定4个参数: 所属线程组,执行体,线原创 2017-08-11 10:08:36 · 1008 阅读 · 0 评论 -
线程的生命周期
线程的生命周期:原创 2017-08-11 11:07:12 · 215 阅读 · 0 评论 -
java线程组和线程
java程序的线程组和线程的结构:main线程下创建thread8:Thread thread8 = new Thread(new ThreadGroup("hello"),"t8");//获取顶层的system 线程组while(tg.getParent()!=null){ //System.out.println(tg); tg = tg.getParent();}//列原创 2017-08-11 09:56:47 · 2934 阅读 · 1 评论 -
线程执行完,死亡后,还能再次执行start吗?
不能代码测试:@Test public void testStart() throws InterruptedException{ Thread add1 = new Thread(()->System.out.println("线程运行中")); add1.start(); add1.join(); add1.start();原创 2017-08-12 10:26:11 · 8899 阅读 · 0 评论 -
线程干扰错误
两个线程读写同一个数据,将会导致的错误。Counter由于这两个操作c都是单一的简单语句,因此可能看不到对交织实例进行操作。然而,即使简单的语句也可以转换为虚拟机的多个步骤。我们不会检查虚拟机所采取的具体步骤 - 只要知道单个表达式c++就可以分解成三个步骤:检索当前值c。 将检索到的值增加1。 将增加的值存储回来c。 表达式c–可以以相同的方式分解,除了第二步减少而不是增量。假设线程A in原创 2017-08-12 10:35:22 · 420 阅读 · 0 评论 -
有个对象已经锁了,调用这个对象的方法会被阻塞吗?
要弄懂java的同步机制,就得先明白java的内存模型。 锁是是针对对象的,所以同步是同步整个对象上的同步方法或代码,不要被加锁方法所误导 下面两个代码是等价的,都是对同一个对象加锁,不同的是,test1是在 被调用后对this加锁,而test2是在调用方法的时候对this加锁。public class TestSynch{ public void test1(){ sy原创 2017-08-12 11:46:52 · 1819 阅读 · 0 评论